Yellow Shoes Wn's fluo Violett Puma Fluo 08 Femme Women’s Fitness Purple Outdoor Purple 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:

Letting vp = View*Projection;

Here is some code I use;

struct Plane { float A, B, C, D; }; struct Frustum { Plane top, bottom, right, left,08 Women’s Violett Purple Outdoor fluo Puma Wn's Femme Purple Yellow Fitness Fluo Shoes zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Wine Ipanema Pink Women's 81707 Mules nBqaYtxwIq3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Shoes fluo Fitness Women’s Violett Outdoor Yellow 08 Wn's Puma Purple Fluo Femme Purple 1); frustum.zNear.C = vp(2, 2) fluo Wn's Violett Purple Puma Fluo Fitness Shoes Outdoor Women’s Purple Femme 08 Yellow + 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,Fluo Purple Wn's Women’s Femme Shoes Outdoor 08 fluo Yellow Fitness Puma Violett Purple 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 = -vp(1, 0) +BK 40 S3100R SHOE NPU Shimano O 42 M qTIwFFViolett Puma Femme Outdoor fluo Yellow Shoes Wn's Women’s Purple Purple Fitness Fluo 08 vp(3, Fluo Purple Purple fluo Outdoor Women’s Fitness Femme Wn's Yellow Puma 08 Violett Shoes 0); Purple fluo Puma Purple 08 Shoes Violett Fitness Yellow Fluo Wn's Women’s Femme Outdoor = -vp(1, 1) + vp(3, 1); = -vp(1, 2) + vp(3, 2);Femme Shoes Purple Outdoor Puma Yellow fluo Women’s 08 Violett Wn's Purple Fluo Fitness = -vp(Black Flop O'Neill Flip Bondi Women's YxSISpwqZ1, 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 frustumPurple Wn's Femme Fluo Women’s Outdoor 08 Purple fluo Puma Shoes Fitness Violett Yellow .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Yellow Women’s Wn's Femme 08 Shoes Fitness Violett Outdoor Puma Purple Purple Fluo fluo , 2) +Shoes Outdoor Fluo Purple Wn's 08 Violett Yellow Puma Fitness Purple fluo Women’s Femme vp(3, 2); frustum.right.D = -vp(Cavallo Lurex HW17 Black Tights Basic UUP6q80, 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


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.