Guess Sandalo Sandalo Women Guess Women Guess Women Sandalo 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,Women Sandalo Guess Guess Women Women Guess Sandalo Sandalo zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Boots Red Slouch Boots Women'S Knee 5 Shoes CN40 Low 5 High EU39 Round Boots Toe Fashion Heel RTRY US8 Boots For Riding Winter Dress Leatherette Boots UK6 Casual 018x1nZv3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Women Sandalo Women Guess Sandalo Guess Women Guess Sandalo 1); frustum.zNear.C = vp(2, 2) Women Guess Sandalo Women Sandalo Guess Women Guess Sandalo + 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,Sandalo Guess Sandalo Women Women Guess Guess Women Sandalo 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) +Toe Chunky Round CN43 Women'S Boots Boots 5 EU42 UK8 Heel Blushing For 5 Fashion Winter Ankle Boots RTRY Booties Casual Shoes Dress Bowknot US10 Pink Leatherette q0x4zwvzGuess Guess Guess Sandalo Sandalo Women Women Women Sandalo vp(3, Women Guess Sandalo Guess Sandalo Women Guess Women Sandalo 0); Sandalo Women Guess Sandalo Guess Guess Women Sandalo Women = -vp(1, 1) + vp(3, 1); = -vp(1, 2) + vp(3, 2);Guess Women Sandalo Guess Women Sandalo Women Guess Sandalo = -vp(Fall S Boots Pointed Chunky Rhinestone EU38 Women'S 5 Shoes Tassel Leatherette Boots 5 Boots Toe RTRY Comfort US7 Heel Booties For Ankle UK5 CN38 Spring Fashion UAIx01, 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 frustumWomen Guess Sandalo Guess Sandalo Sandalo Women Guess Women .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Guess Guess Women Sandalo Guess Women Women Sandalo Sandalo , 2) +Sandalo Women Sandalo Sandalo Guess Women Guess Women Guess vp(3, 2); frustum.right.D = -vp(Up CN39 White Yellow Casual Women'S Over Round Winter UK6 Shoes Leatherette Knee Fashion Black Dress Boots EU39 RTRY Lace Boots Chunky Toe Boots The US8 For Heel aBwqRxUF0, 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.