|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
As far as I know, the angle between two vectors can be found by dividing the
dot product by the lengths and taking the arccosine. If the lengths are both
one, then the arccosine of the dot product should be equal to the angle.
Povray finds the angle between two vectors like this like this: acos(min(1,
vdot(vnormalize(V1), vnormalize(V2))))
What is the purpose of the min()? I guess that this is for some special
case, but I can't figure out what it is. Just curious, but I would really
appreciate some enlightenment. My math is limited, but I'm working on it.
-Shay
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On Tue, 26 Mar 2002 10:40:41 -0600, "Shay" <sah### [at] simcopartscom> wrote:
> Povray finds the angle between two vectors like this like this: acos(min(1,
> vdot(vnormalize(V1), vnormalize(V2))))
> What is the purpose of the min()?
perhaps to prevent strange floating point accuracy problem ?
ABX
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On Tue, 26 Mar 2002 10:40:41 -0600, "Shay" <sah### [at] simcopartscom> wrote:
>Povray finds the angle between two vectors like this like this: acos(min(1,
>vdot(vnormalize(V1), vnormalize(V2)))) What is the purpose of the min()?
acos is defined over [-1; 1] because no angle has a cosine greater
than 1. However, with computers, it is perfectly normal to have as a
result something like 1.0000000098345352 when you need 1, which, in
this case, will trigger a floating point exception. Hence the min.
Peter Popov ICQ : 15002700
Personal e-mail : pet### [at] vipbg
TAG e-mail : pet### [at] tagpovrayorg
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Shay <sah### [at] simcopartscom> wrote in message
news:3ca0a478$1@news.povray.org...
Thanks, guys. I figured it was something like that.
-Shay
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |