Jump to content
  • Advertisement
Sign in to follow this  
irreversible

Extending 4D-2D projections to arbitrary planes

This topic is 3848 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

The topic is: fractals. To project a 4D point onto one of the six main planes from four-space you take the two imaginary values Z and C, compute their positions in four-space and then quite trivially plot the point using the respective values from either: Z = COMPLEXADD(COMPLEXMULT(Z, Z), C); //the traditional Mandelbrot series Z = Z^2 + C //example projection into two-space px = Z.r; py = Z.i; The above example plots all the points onto the Z plane. Combining the two values, we get other possible combinations (planes): {Z.r, Z.i}, {Z.r, C.r}, {Z.r, C.i}, {Z.i, C.r}, {Z.i, C.i}, {C.r, C.i}. I want to extend this to projection onto arbitrary planes to, eg, provide smooth rotations from one major plane to another. The problem is I'm not too big on maths and I'm not really sure what my starting point should be: do I need to rotate the 4D point as a pair of quaternions or should I just calculate the projection plane (which would seem more obvious). In either case, I can't really see how to do this so I'd appreciate some help. Cheers

Share this post


Link to post
Share on other sites
Advertisement
Let P = (x,y,z,w) be a point in 4D. Let U0 = (1,0,0,0) and U1 = (0,1,0,0). The projection of P onto the plane spanned by U0 and U1 is (x,y,0,0) = x*U0 + y*U1. Similar constructions apply to your other 5 cases.

Now let U0 and U1 be arbitrary unit-length vectors that are perpendicular. Let U2 and U3 be unit-length vectors such that {U0,U1,U2,U3} is an orthonormal set (vectors are unit-length and mutually perpendicular). The point may be written as P = c0*U0 + c1*U1 + c2*U3 + c3*U3, where c0 = Dot(P,U0), c1 = Dot(P,U1), c2 = Dot(P,U2), and c3 = Dot(P,U3). The projection onto the plane spanned by U0 and U1 is: Dot(P,U0)*U0 + Dot(P,U1)*U1. Observe that you do not need to construct a pair U2 and U3 to generate the projection.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!