POV-Ray : Newsgroups : povray.advanced-users : math quiz : Re: math quiz Server Time
30 Jul 2024 08:25:47 EDT (-0400)
  Re: math quiz  
From: Josh English
Date: 7 Dec 1999 16:31:18
Message: <384D7C83.5A721635@spiritone.com>
There is a standard orientation macro that looks like this:

#macro Orient(v1,v2)
  #local nx = vnormalize(v2 - v1);
  #local nz = vnormalize(vcross(nx,y));
  #local ny = vcross(nz,nx);
  matrix <nx.x,nx.y,nx.z,
          ny.x,ny.y,ny.z,
          nz.x,nz.y,nz.z,
          v1.x,v1.y,v1.z>
#end

This only works if the object "faces" the positive x axis... so you might
want to rotate your torus by 90*z before including the macro:

torus { 1, 0.25 // or whatever
            rotate 90*z
            Orient(thisvector, thatvector) }

It is possible (and I've don't it before but I don't have the file handy)
to rearrange the first three lines of the macro that will make the
rotation command unnecessary.

Good Luck




> Any idea how I can rotate a torus for instance so it's aligned with a
> vector? This doesn't quite do the trick, but illustrates what I'm after
> (and how stupid I am):
>
> rotate
>    x*degrees(atan2(n.z,n.y))+
>    y*degrees(atan2(n.x,n.z))+
>    z*degrees(atan2(n.x,n.y))
>
> Where n would be the new "normalvector" for the torus.
>
> sig

--

Josh English
eng### [at] spiritonecom
ICQ: 1946299
"Stress is when you wake up screaming and realize you haven't fallen
asleep yet."


Post a reply to this message

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