User:Le Forgeron/vault/RefImgCameraViewUltrawideangle

From POV-Wiki
Jump to navigation Jump to search

RefImgCameraViewUltrawideangle.png

#version 3.7;
global_settings {assumed_gamma 1 }

camera {
orthographic
location -(image_height+image_width)*z
direction z
up image_height*y
right image_width*x
rotate 45*x
rotate -45*y
}

#include "colors.inc"
background { White }
#default { texture { finish { ambient 1 diffuse 0 } } }

#declare Text_size = image_height / 21;
#declare Vertical_down_space = -Text_size*y*1.7; 
#declare Vertical_up_space = Text_size*y*.6; 
#declare Point_size = image_height / 82;
#declare Line_size = image_height / 482;

#macro Label(te,pos,col)
text { ttf "ttf-dejavu/DejaVuSerif.ttf" te 0.1,0 
texture { pigment { colour col } }
translate -strlen(te)*0.23*x
rotate 45*x
rotate -45*y
scale Text_size translate pos }
#end

#macro Small_Label(te,pos,col)
text { ttf "ttf-dejavu/DejaVuSerif.ttf" te 0.1,0 
texture { pigment { colour col } }
rotate 45*x
rotate -45*y
scale Text_size*2/3 translate pos }
#end

#macro Arrow(pos,dir)
#local k=vlength(dir);
cone { pos,0,pos-Text_size*dir/k,Point_size }
#end
#macro Ray(pos,dir)
#local k=vlength(dir);
cone { pos,0,pos-Text_size*dir/k,Point_size texture { pigment { colour Blue } } }
#end

#declare Location = <0,0,-0.33*image_height>;
#declare Look_at = <0,0,0.7*image_height>;
#declare Center = <0,0,-0.0*image_height>;
#declare Right = <image_width/5,0,0>;
#declare Up = vrotate (Right, z*90); //<0,image_height/6,0>*1.5;
#declare FA = 270;
sphere { Location, Point_size }
Label("location",Location+2*Vertical_down_space, Black)

sphere { Look_at, Point_size }
Label("look_at",Look_at+Vertical_up_space, Black)

cylinder { Location, Center , Line_size }
cylinder { Center, Look_at , Line_size texture { pigment { checker colour Black, colour White scale Text_size } } }
cylinder { Location, -2*Look_at , Line_size texture { pigment { checker colour Black, colour White scale Text_size } } }
Arrow(Center,Center-Location)
Label("direction", Center+Vertical_up_space, Black )

cylinder { -Right*2, 2*Right, Line_size }
Label("right",Right*2+Vertical_down_space, Black)
Arrow(Right*2,Right//-Center
)

cylinder { -Up*2, 2*Up, Line_size }
Label("up",Up*2+Vertical_up_space, Black)
Arrow(Up*2,Up //-Center
)
#include "finish.inc"
#macro zozo()
#local x0=xx*FA;
#local y0=yy*FA*ru/rr;
#local cx=cos(radians(x0));
#local sx=sin(radians(x0));
#local cy=cos(radians(y0));
#local sy=sin(radians(y0));
#local Vect=(sx*x)+(sy*y)+(cx*cy)*z;
sphere { 0, Line_size translate Vect*rc*i translate Location 
texture { pigment { colour rgbt 6/9
//<1-i,1/2+xx,1/2+yy,1/2> 
} }
}
#end
#macro zaza(xx,yy,cc)
#local x0=xx*FA;
#local y0=yy*FA*ru/rr;
#local cx=cos(radians(x0));
#local sx=sin(radians(x0));
#local cy=cos(radians(y0));
#local sy=sin(radians(y0));
#local Vect=(sx*x)+(sy*y)+(cx*cy)*z;
sphere { 0, 1.2*Line_size translate Vect*rc*i translate Location 
texture { pigment { colour cc } }
}
#end
#macro tpos(xx,yy)
#local x0=xx*FA;
#local y0=yy*FA*ru/rr;
#local cx=cos(radians(x0));
#local sx=sin(radians(x0));
#local cy=cos(radians(y0));
#local sy=sin(radians(y0));
#local Vect=(sx*x)+(sy*y)+(cx*cy)*z;
rc*Vect
#end
#macro Picture(Right,Up,Location,i)
#declare rc=vlength(Right);
#declare rr=vlength(Right);
#declare ru=vlength(Up);
//#local ru=rc*sin(radians(FB));
//#local lu=rc*cos(radians(FB));
//#local ra=sqrt(rr*rr+rc*rc+ru*ru);
//#local rb=sqrt(rr*rr+rc*rc+ru*ru);
//#declare xa=asin(rr/(1*rb));
#for(xx,-1/2,1/2,1/240)
#for(yy,-1/2,1/2,1/160)
zozo()
#end
#end
#for(xx,-1/2,1/2,1/160)
#for(yy,-1/2,1/2,1/240)
zozo()
#end
#end
#for(xx,-1/2,1/2,1/240)
zaza(xx,-1/2,Black)
zaza(xx,1/2,Black)
zaza(1/2,xx,Black)
zaza(-1/2,xx,Black)
#end
#for(xx,-1/4,1/4,1/240)
zaza(xx,-1/4,Yellow)
zaza(xx,1/4,Yellow)
zaza(1/4,xx,Yellow)
zaza(-1/4,xx,Yellow)
#end
#for(xx,-1/9,1/9,1/240)
zaza(xx,-1/9,Green*3)
zaza(xx,1/9,Green*3)
zaza(1/9,xx,Green*3)
zaza(-1/9,xx,Green*3)
#end
cylinder { Location+i*(Up+Right), Location-i*(Up-Right), 2*Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location+i*(Up-Right), Location-i*(Up+Right), 2*Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location+i*(Up-Right), Location+i*(Up+Right), 2*Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-i*(Up+Right), Location-i*(Up-Right), 2*Line_size texture { pigment { colour rgb <1,0,1> } } }
/*
cylinder { Location-Up-rc*z, Location-Up+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location+Up-rc*z, Location+Up+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location+Right-rc*z, Location+Right+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-Right-rc*z, Location-Right+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-Right-rc*z, Location+Right-rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-Right+rc*z, Location+Right+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-Up+rc*z, Location+Up+rc*z, Line_size texture { pigment { colour rgb <1,0,1> } } }
cylinder { Location-Up-rc*z, Location+Up-rc*z, Line_size 
texture { pigment { colour rgb <1,0,1> } } }
*/
torus { rc*i, 2*Line_size translate Location 
texture { pigment { colour rgb <1,0.5,1> } } }
torus { rc*i, 2*Line_size rotate 90*z translate Location 
texture { pigment { colour rgb <1,0.25,1> } } }
/*
intersection {
cylinder { Location-Up*i,Location+Up*i,rc*i open 
texture { pigment { colour rgbft 0.5 }  } }
plane { x,0 rotate y*FA/2 translate Location  no_shadow texture { pigment { colour rgbf 1 } }  }
plane { -x,0 rotate -y*FA/2 translate Location  no_shadow texture { pigment { colour rgbf 1 } }  }
texture { pigment { colour rgbft 0.5 }  }
}
intersection {
union {
torus { rc*i, Line_size translate Location+Up*i }
torus { rc*i, Line_size translate Location-Up*i }
}
plane { x,0 rotate y*FA/2 translate Location  no_shadow texture { pigment { colour rgbf 1 } }  }
plane { -x,0 rotate -y*FA/2 translate Location  no_shadow texture { pigment { colour rgbf 1 } }  }
}
cylinder { -Up*i,+Up*i, Line_size translate (Center-Location)*i rotate y*FA/2 translate Location }
cylinder { -Up*i,+Up*i, Line_size translate (Center-Location)*i rotate -y*FA/2 translate Location }
*/

#end

Picture(Right,Up,Location,1)

#declare rc=vlength(Right);
cylinder { 0, rc*z, Line_size rotate y*FA/2 translate Location texture { pigment { colour Red } } }
cylinder { 0, rc*z, Line_size rotate -y*FA/2 translate Location texture { pigment { colour Red } } }
Label("angle", Location+Vertical_up_space*18 ,Red)

/*
cylinder { Location, Center Line_size translate -Location rotate -x*FB  translate Location  texture { pigment { colour Yellow } } }
cylinder { Location, Center Line_size*2 /* translate -Location rotate -x*FB translate Location */ texture { pigment { colour Yellow } } }
Label("angle", Location*2+Vertical_up_space*9 ,Black)
*/

cylinder { Location, Location+tpos(1/2,1/2), Line_size texture { pigment { colour Blue } } } 
cylinder { Location, Location+tpos(-1/2,1/2), Line_size texture { pigment { colour Blue } } } 
cylinder { Location, Location+tpos(-1/2,-1/2), Line_size texture { pigment { colour Blue } } } 
cylinder { Location, Location+tpos(1/2,-1/2), Line_size texture { pigment { colour Blue } } } 

/*
cylinder { Location, Up+Right, Line_size }
cylinder { Location, -Up+Right, Line_size }
cylinder { Location, -Up-Right, Line_size }
cylinder { Location, Up-Right, Line_size }
*/

Ray ( Location +3/5*tpos(1/2,1/2), tpos(1/2,1/2) )
Ray ( Location +3/5*tpos(1/2,-1/2), tpos(1/2,-1/2) )
Ray ( Location +3/5*tpos(-1/2,-1/2), tpos(-1/2,-1/2) )
Ray ( Location +3/5*tpos(-1/2,1/2), tpos(-1/2,1/2) )
/*
Ray ( Location +3/5*vrotate((Center-Location-Up),-y*FA/2), vrotate((Center-Location-Up),-y*FA/2) )
Ray ( Location+3/5*vrotate((Center-Location+Up),-y*FA/2), vrotate((Center-Location+Up),-y*FA/2) )
Ray ( Location +3/5*vrotate((Center-Location+Up),y*FA/2), vrotate((Center-Location+Up),y*FA/2) )
*/

difference {
disc { Location, Up, vlength(Location)/6, vlength(Location)/6-Point_size texture { pigment { colour Red } } }
intersection {
plane { x,0 rotate -y*FA/2 translate Location texture { pigment { colour rgbt 1 } } }
plane { -x,0 rotate y*FA/2 translate Location texture { pigment { colour rgbt 1 } } }
}
}
/*
intersection {
disc { 0, x , vlength(Location)/7, vlength(Location)/7-Point_size
translate Location 
texture { pigment { colour Yellow } } }
plane { y,0 rotate -x*FB translate Location texture { pigment { colour rgbt 1 } } }
plane { -y,0 /* rotate x*FB */ translate Location texture { pigment { colour rgbt 1 } } }
//plane { 0 translate Location texture { pigment { colour rgbt 1 } } }
//plane { vcross(-Right,Location-Center+Up),0 translate Location texture { pigment { colour rgbt 1 } } }
}
*/