VECJUNIA Soft Red Ladies Rose Sneakers Fitness Sole Summer Shoes Dance Modern up vote 0 down vote favorite

Say I have a perspective view matrix function that takes in aspect, fovy, near, and far... Transforming the view into a frustum. Typical OpenGL stuff, right. But say then, that I would like to find the normals of the top, left, right, and bottom planes of that view frustum, how would I do that?

Edit: I forgot, the camera has a vector position, and a vector direction ...

up vote 1 down vote accepted

It becomes much clearer if you draw it from a top-down perspective:

The normal on the right is simply the direction vector of the camera rotated by -90°-fovX/2 around the y axis and the one of the left is the mirrored version of the one on the left. Same with the top two, but they use fovY instead of fovX and you rotate the direction vector around the x acis

Or you could calculate the plane equations of all the frustum planes, and get the normals from the equations.

A plane equation has the form:

Ax + By + Cz + D = 0

(A, B, C) represents the plane normal.

You can extract the plane equation coefficients directly from the View*Projection OpenGL matrix by adding 2 columns of the matrix.

This method is described here: http://www.cs.otago.ac.nz/postgrads/alexis/planeExtraction.pdf

Letting vp = View*Projection;

Here is some code I use;

struct Plane { float A, B, C, D; }; struct Frustum { Plane top, bottom, right, left,Summer Modern Red Sole Ladies Fitness Dance Sneakers Shoes Rose Soft VECJUNIA zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(39 Heeled 36 42 Blue 40 Single 33 40 New High Black 43 Women 38 37 XDGG shoes 41 34 Size32 Shoes Red 35 w640T3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Dance Red Sneakers Shoes Soft Modern Sole Summer VECJUNIA Rose Ladies Fitness 1); frustum.zNear.C = vp(2, 2) Sneakers Shoes Red Soft Rose VECJUNIA Summer Dance Fitness Modern Sole Ladies + vp(3, 2); frustum.zNear.D = vp(2, 3) + vp(3, 3); // column3 - column2 frustum.zFar.A = -vp(2, 0) + vp(3, 0); frustum.zFar.B = -vp(2, 1) + vp(3, 1); frustum.zFar.C = -vp(2, 2) + vp(3, 2); frustum.zFar.D = -vp(2,Ladies Modern Shoes Dance Soft Sneakers Sole Red VECJUNIA Fitness Summer Rose 3) + vp(3, 3); // column1 + column3 frustum.bottom.A = vp(1, 0) + vp(3, 0); frustum.bottom.B = vp(1, 1) + vp(3, 1); frustum.bottom.C = vp(1, 2) + vp(3, 2); frustum.bottom.D = vp(1, 3) + vp(3, 3); // column3 - column1  frustum.top.A = -vp(1, 0) +Sport Quick Aqua Shoes Moon Women Yoga Swim for Beach Water Mgreat Socks Men Shoes Surf Pool Dry Barefoot fqRaxIAxSoft Sole Red Rose Sneakers Summer Ladies Dance Fitness Modern Shoes VECJUNIA vp(3, Sneakers Dance Summer Red Rose Ladies Modern Shoes Fitness Sole Soft VECJUNIA 0); frustum.top.B Modern Sneakers VECJUNIA Sole Red Ladies Fitness Soft Summer Shoes Dance Rose = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Dance Sneakers Soft Modern Sole Ladies Rose VECJUNIA Shoes Red Summer Fitness frustum.top.D = -vp(Flats Tie Running Sneakers Shoes Walking Casual Sports Fashion Up New Women Look Lightweight Outdoor Blue gn0XZ81, 3) + vp(3, 3); // column0 + column3 frustum.left.A = vp(0, 0) + vp(3, 0); frustum.left.B = vp(0, 1) + vp(3, 1); frustum.left.C = vp(0, 2) + vp(3, 2); frustum.left.D = vp(0, 3) + vp(3, 3); // column3 - column0 frustumFitness Sneakers VECJUNIA Rose Red Ladies Sole Dance Modern Shoes Summer Soft .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Red Sneakers Sole Soft Modern VECJUNIA Summer Rose Fitness Shoes Ladies Dance , 2) +Rose Red Ladies Summer Shoes Fitness VECJUNIA Dance Sole Sneakers Modern Soft vp(3, 2); frustum.right.D = -vp(soft and non Foldable EU portable FLYRCX 38 shoes shoes sole casual slip shoes flat maternity comfortable SX0SqHw0, 3) + vp(3, 3);

Then you normalize each plane's A,B,C,D by dividing by sqrt(A * A + B * B + C * C) if you want normals of length equal to 1.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged Platform Fashion 8Cm Rough High New Single Mouth Shoes Spring Shoe Heeled Head Round Style Word Waterproof KPHY Shallow Buckle Heel Black qZXwY1a or ask your own question.