POV-Ray : Newsgroups : povray.binaries.images : stereogram anyone? 51kbu : Re: stereogram anyone? 51kbu Server Time
3 Oct 2024 19:17:34 EDT (-0400)
  Re: stereogram anyone? 51kbu  
From: Mark Wagner
Date: 14 Jan 2000 03:05:00
Message: <387ed8ac@news.povray.org>
Harold Baize wrote in message <387e613f@news.povray.org>...
>> camera {
>>    #local L=28;
>>    #local Pos=<-45 , 12 ,-30>*.7;
>>    location  Pos + vnormalize(vcross(Pos,y))*clock
>>    look_at   <0, 0 , -2>
>>    angle degrees(atan2(35,L))
>> }
>
>Whoa, hecka complex camera statement. Guess I'm still thinking with a
>POV 1.0 camera syntax.


How's this?  This is one of the cameras from a fly-through of the Grand
Canyon that I'm working on.

camera{
 #declare Clock = clock;
 // Some basic vector calculus, plus a fudge factor
 #declare UnitTangent = vnormalize(path(Clock+dclock)-path(Clock));
 #declare PlusdClock =
vnormalize(path(Clock+dclock+dclock)-path(Clock+dclock));
 #declare UnitNormal = vnormalize(PlusdClock - UnitTangent);
 #if(vlength(UnitNormal)=0)#declare UnitNormal =
vaxis_rotate(y,vcross(UnitTangent, y),
90-degrees(acos(vdot(UnitTangent,y))));#end
 #declare Curvature = vlength((PlusdClock -
UnitTangent)/dclock)/vlength((path(Clock+dclock)-path(Clock))/dclock);
 #declare UpVect1 = vaxis_rotate(y,vcross(UnitTangent, y),
90-degrees(acos(vdot(UnitTangent,y))));
 #declare AngleFract = atan2(Curvature,1)/(pi/2);
 #declare Angle = degrees(acos(vdot(UnitNormal, UpVect1)));
 #if(vdot(UnitNormal,UpVect1)<0)#declare Angle=(-360)+Angle;#end
 #declare Angle = (Angle/2)*AngleFract;

 #fopen FileID "GCanyon.dat" read
 #read(FileID, OldAngle)
 #fclose FileID

 #if(abs(Angle-OldAngle)>dAngle)
  #declare Angle=OldAngle+(abs(dAngle)*Sign(Angle));
 #end

 #fopen FileID "GCanyon.dat" write
 #write(FileID, Angle)
 #fclose FileID

 #declare UpVect = vaxis_rotate(UpVect1,UnitTangent,Angle);
 #declare UnitBinormal = vnormalize(vcross(UnitTangent, UpVect));
  #warning concat("Tangent:  ", str(UnitTangent.x,6,6),",",
str(UnitTangent.y,6,6), ",",str(UnitTangent.z,6,6), "\n")
  #warning concat("Normal:   ", str(UnitNormal.x,6,6),",",
str(UnitNormal.y,6,6), ",",str(UnitNormal.z,6,6), "\n")
  #warning concat("UpVect:   ", str(UpVect.x,6,6),",", str(UpVect.y,6,6),
",",str(UpVect.z,6,6), "\n")
  #warning concat("Binormal: ", str(UnitBinormal.x,6,6),",",
str(UnitBinormal.y,6,6), ",",str(UnitBinormal.z,6,6), "\n")
 location path(Clock)
 direction UnitTangent
 up UpVect
 right UnitBinormal*1.33
 angle 60
}


Mark


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.