|
|
If I run this sdl:
#debug "\nStart of Process\n"
#debug #concat ("\n atan2= ", str( degrees(atan2(5,16)),2,6), "\n")
#declare Pos =
vrotate ( <0,0,16>, <-degrees(atan2(5,16)), 0, 0> );
#debug #concat ("\n y= ", str( Pos.y,2,6), "\n")
#debug #concat ("\n z= ", str( Pos.z,2,6), "\n")
#debug "\nEnd of Process\n"
I get this result:
Start of Process
atan2= 17.354025
y= 4.772400
z= 15.271680
End of Process
On the face of it I looks like either vrotate or atan2 is only accurate
to within 5% ?
I would have expected more accuracy. Are my expectations wrong? Is my
thinking wrong? Am I invoking the functions wrong? Using debug wrong?
This is running MegaPov 1.0 on XP and Athlon 64
Post a reply to this message
|
|
|
|
> On the face of it I looks like either vrotate or atan2 is only accurate
> to within 5% ?
If you're expecting y=5 and z=16, then you need to make sure that the
starting vector has the same length as the vector <0,5,16>. That means you
should start with the vector <0,0,sqrt(5*5+16*16)>. As it is, you're
starting with a vector that is shorter than that, so you get y slightly less
than 5 and z slightly less than 16.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
|
|
Slime wrote:
>>On the face of it I looks like either vrotate or atan2 is only accurate
>>to within 5% ?
>
>
> If you're expecting y=5 and z=16, then you need to make sure that the
> starting vector has the same length as the vector <0,5,16>. That means you
> should start with the vector <0,0,sqrt(5*5+16*16)>. As it is, you're
> starting with a vector that is shorter than that, so you get y slightly less
> than 5 and z slightly less than 16.
>
> - Slime
> [ http://www.slimeland.com/ ]
>
>
Thanks for being kine. Yes I see my mistake now.
Post a reply to this message
|
|