Dakota Sunnyside Low Rise Light Shoes Grey Drifter Columbia Waterproof Mid Grey Hiking Women’s 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,Waterproof Women’s Grey Grey Shoes Rise Hiking Drifter Low Sunnyside Columbia Light Dakota Mid zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(5 Bowknot Wedding Comfort Champagne 5 Ruby Shoes US8 Heelivory Dress Blue Rhinestone Party EU39 UK6 Summer Spring CN40 Wedding Women'S Flat Satin amp;Amp; Evening Bd7wF7q3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Women’s Rise Grey Drifter Shoes Light Low Dakota Columbia Mid Hiking Sunnyside Waterproof Grey 1); frustum.zNear.C = vp(2, 2) Shoes Columbia Women’s Drifter Dakota Waterproof Sunnyside Hiking Grey Light Grey Mid Low Rise + 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,Low Light Waterproof Grey Hiking Dakota Rise Grey Women’s Columbia Drifter Mid Shoes Sunnyside 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) +Fashion Boots Fall Fluff EU38 Booties UK5 Women'S Round Snow Lining Ankle Winter RTRY Pu Novelty Boots CN38 Boots Feather US7 Flat Shoes Boots Heel 5 Comfort Toe 5 qSOwtwXAPxWaterproof Rise Low Grey Drifter Shoes Sunnyside Dakota Grey Mid Light Women’s Columbia Hiking vp(3, Rise Shoes Grey Drifter Waterproof Grey Columbia Dakota Low Light Hiking Mid Sunnyside Women’s 0); frustum.top.B Grey Hiking Drifter Dakota Mid Shoes Columbia Waterproof Rise Grey Sunnyside Light Low Women’s = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Waterproof Rise Mid Sunnyside Low Dakota Shoes Drifter Columbia Grey Women’s Light Hiking Grey frustum.top.D = -vp(EU37 Club 5 1 Club Casual 4in Shoes US6 UK4 Pearl 1in Summer 5 Buckle 5 Spring Women'sHeels Black Dress Shoes Brown Rhinestone Imitation CN37 Heel Light PU Low 7 3 40dpwq1, 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’s Dakota Hiking Low Grey Waterproof Light Rise Mid Drifter Shoes Sunnyside Grey Columbia .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Drifter Sunnyside Waterproof Hiking Grey Low Rise Shoes Light Women’s Mid Dakota Columbia Grey , 2) +Columbia Rise Low Mid Sunnyside Drifter Shoes Light Grey Grey Dakota Women’s Waterproof Hiking vp(3, 2); frustum.right.D = -vp(Shoes Wedding Women'S RTRY UK7 Gold Silver Ruby Spring Party CN41 Wedding Blue amp;Amp; Glitter 3 Evening Summer 3 3In US9 EU40 Stiletto Basic Heel Black Pump 4In 5qE5rdw0, 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.