  | 
  | 
 
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
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
 
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
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] spiritone com
ICQ: 1946299
"Stress is when you wake up screaming and realize you haven't fallen
asleep yet."
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
Thanks a bunch! I finally understand the transformation matrix. The
documentation isn't very good.
Josh English wrote:
> 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
>
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
I pride myself on being able to explain anything, but John VanSickle explains
the Matrix better than I ever could. Take a look at
http://users.erols.com/vansickl/matrik.htm for more details
> Thanks a bunch! I finally understand the transformation matrix. The
> documentation isn't very good.
>
> Josh English wrote:
>
> > 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
> >
--
Josh English
eng### [at] spiritone com
ICQ: 1946299
"Stress is when you wake up screaming and realize you haven't fallen asleep
yet."
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
Josh English wrote:
> 
> I pride myself on being able to explain anything, but John VanSickle
> explains
> the Matrix better than I ever could. Take a look at
> http://users.erols.com/vansickl/matrik.htm for more details
> 
Very educational!
(http://users.erols.com/vansickl/matrix.htm)
Remco
 
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 
 | 
  |