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