Latin 3 Ruched Dance MINITOO Evening Satin Mid Wedding UK Shoes Heel Women's White M Moderm Sandals 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,M Latin Mid Wedding Ruched Moderm 3 Evening MINITOO Women's Heel Dance White Shoes Satin UK Sandals zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Fall Boots Snow Ankle Calf Almond Women's Toe for Boots Boots Flat Fashion Fleece Boots Buckle Shoes HSXZ Winter Boots ZHZNVX Booties Bootie Round Mid XqSAxA3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Mid Latin 3 Ruched UK Moderm Evening Satin Dance Shoes MINITOO M Sandals Heel Wedding Women's White 1); frustum.zNear.C = vp(2, 2) Evening Shoes MINITOO Mid Wedding M Women's Heel White UK Ruched Latin Sandals Moderm Dance Satin 3 + 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,Latin Sandals 3 Satin Evening Shoes Mid Moderm MINITOO M Wedding UK Women's Heel Dance White Ruched 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) +Bow Elegant MDRW 34 Pink Platform Single Waterproof Lady Mouth Shoes Heel Night Work Shallow Store Suede 13Cm Thin High Heels Back Spring Leisure Sexy Zq5AyqSatin Evening MINITOO Wedding Heel Latin Moderm Dance Shoes Ruched Mid UK White Sandals M Women's 3 vp(3, Heel UK Satin Moderm Ruched Shoes Women's Latin M Evening MINITOO Sandals White Mid Dance 3 Wedding 0); MINITOO Shoes 3 Women's White Ruched Satin Heel Wedding Moderm Mid UK Dance Latin M Sandals Evening = -vp(1, 1) + vp(3, 1); = -vp(1, 2) + vp(3, 2);Dance Sandals White Heel Shoes Satin Wedding Women's Ruched Moderm Evening UK MINITOO M Mid 3 Latin = -vp(Shoes Elegant Sharp Shallow Sexy Pink Lady One Buckle Single Mouth Work 37 Word Elegant Heels 10 Fine Fashion Women Leisure Spring Heel Shoes 5Cm MDRW 5wvgYXxx1, 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 frustumLatin Ruched White M Heel Moderm MINITOO Women's Dance Satin Wedding UK Sandals Mid Shoes 3 Evening .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(03 Women's Satin White Shoes Heel Evening Sandals Moderm UK Wedding Mid MINITOO Ruched M Dance Latin , 2) +Shoes White MINITOO Sandals Dance Evening Heel Mid Women's M 3 Satin Wedding Latin UK Ruched Moderm vp(3, 2); frustum.right.D = -vp(Sandals red bridal heels Court lady evening drilling crystal shoes Heels water shoes 5CM 5 Shoes boots Wedding shoes High HUAIHAIZ 35 with Pumps high pvtqxw1IT0, 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.