2011-10-07 14 views
8

favor considere lo siguiente, entre los siguientes partircolocar una imagen en el plano XY en un gráfico 3D en Mathematica

Can we generate "foveated Image" in Mathematica

Clear[acuity]; 

acuity[distance_, x_, y_, blindspotradius_] := 

With[{\[Theta] = ArcTan[distance, Sqrt[x^2 + y^2]]}, 
     Clip[([email protected][-Abs[\[Theta]]/(15. Degree)] - .05)/.95, 
        {0,1}] (1.-Boole[(x + 100.)^2 + y^2 <= blindspotradius^2])] 

Plot3D[acuity[250., x, y, 9], {x, -256, 256}, {y, -256, 256}, 
PlotRange -> All, Axes -> False, PlotPoints -> 40, 
ExclusionsStyle -> Automatic, Boxed -> False, Mesh -> None] 

enter image description here

¿Cómo podría añadir la foto a continuación en el plano X & Y. Luego haz que la superficie se represente transparente. ¿Es posible? (imagen obtenida con una solución en la pregunta mencionada anteriormente).

enter image description here

+0

Vi esa foto antes ... fue tomada por un fotógrafo famoso ... ¿cómo se llamaba? –

+1

Henri Cartier Bresson, "Sevilla" 1933 :-) – 500

+0

¡Gracias! ¡Pobres españoles! –

Respuesta

10
i = Import["http://i.stack.imgur.com/0EizO.png"]; 
p = {{0, 0}, {1, 0}, {1, 1}, {0, 1}}; 
[email protected]{ 
    Plot3D[ 
    acuity[250., x, y, 9], {x, -256, 256}, {y, -256, 256}, 
    PlotRange -> All, PlotPoints -> 40,ExclusionsStyle -> Automatic,Axes -> False, 
    Boxed -> False, Mesh -> None, PlotStyle -> Directive[Opacity[0.5]]], 
    Graphics3D[{Texture[i], 
    Polygon[Join[#, {0}] & /@ (2 p - 1) 256, VertexTextureCoordinates -> p]} 
    ]} 

enter image description here

Editar

Tratar con AspectRatio [], conforme a lo solicitado en sus comentarios:

p = {{0, 0}, {1, 0}, {1, 1}, {0, 1}}; 
r = [email protected]#/[email protected]# &@[email protected]@i; 
a = 1.4; 
[email protected]{Plot3D[ 
     acuity[250., a x, a y, 9], {x, -256 , 256 }, {y, -256 r , 256 r }, 
      PlotRange -> All, PlotPoints -> 40, ExclusionsStyle -> Automatic, 
      Axes -> False, Boxed -> False, Mesh -> None, 
      PlotStyle -> Directive[Opacity[0.5]], AspectRatio -> r], 
    Graphics3D[{Texture[i], 
      Polygon[{{-256 , -256 r, 0}, { 256 , -256 r , 0}, 
         { 256 , 256 r, 0}, {-256 , 256 r, 0}}, 
      VertexTextureCoordinates -> p]}]} 

enter image description here

+0

¡Lo es! gracias belisario! – 500

+0

gracias de nuevo. en su primera versión, ¿hay alguna forma de trazar la razón de la imagen? No puedo entender el PlotRange en trama 3D :-( – 500

+0

@ 500 No estoy seguro de a qué te refieres con "trazar sobre la proporción de imagen". Por favor, reformula :) :) –

Cuestiones relacionadas