|
|
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
|
|