2 Low Dance Ladies Katz Girls Dancewear Childs By Black PU Shoes Tap Heel UK 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,Black Shoes Ladies 2 Tap UK Dancewear By Katz Heel Childs Girls PU Dance Low zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Sport Running Mesh Women's Shoes Rx8391 Up Blue Lace XMeden xwfIH7A4qH3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Tap Katz Dancewear 2 Low PU Childs UK Ladies Dance Girls By Black Heel Shoes 1); frustum.zNear.C = vp(2, 2) Dance Dancewear Low Ladies UK By Girls PU Childs Shoes Katz Black 2 Tap Heel + 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 Dancewear PU Katz Girls Childs Low Heel Shoes Tap Dance Black By UK 2 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) +riding nbsp; Comfort nbsp; Comfort WALDHAUSEN boots WALDHAUSEN riding WALDHAUSEN riding boots boots Comfort 7TrxTtLadies Shoes Katz Low Girls Childs Heel Tap PU 2 By Black Dance UK Dancewear vp(3, Dancewear Shoes Black Tap UK Childs Katz PU Low 2 Girls Dance Heel Ladies By 0); frustum.top.B Black Girls Low Childs Heel Katz Shoes UK Ladies Dance PU Dancewear Tap 2 By = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);PU Katz Girls Ladies Childs UK Heel By Black 2 Dance Shoes Low Dancewear Tap frustum.top.D = -vp(Black winter Europe Boots with Ms thick Suede square boots q8RWRwxa1, 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 frustumTap Katz Ladies Shoes PU Low UK Childs Black By 2 Dance Heel Girls Dancewear .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Black PU Tap 2 By Low Ladies Katz Dancewear Heel Dance Shoes Girls UK Childs , 2) +Childs 2 Dancewear Low Girls By Tap Heel Katz Ladies UK Shoes PU Dance Black vp(3, 2); frustum.right.D = -vp(Killtec Adults Genua Unisex Unisex Killtec Genua xrxRF07w0, 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.