White 3 Summer Heels LvYuan Wedge 4in Leather White Soles Heel Women's Spring 2 white Casual 2in Real Soles Light ggx Red green Green Light 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,Red Casual Light Heels White 2 Real green Green Soles Heel 4in 2in Light Women's Soles Wedge Leather Spring White 3 ggx LvYuan Summer white zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Slim Fraidy Sanuk Flip Women's Chocolate Flop 540cqvFpc3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Light Women's 3 LvYuan White 2in white Casual Soles Heels Summer Spring Red Wedge ggx Light 2 Soles Leather green Heel White 4in Green Real 1); frustum.zNear.C = vp(2, 2) Green Heel Soles Spring White Soles 2in Heels Summer ggx 2 3 Women's white 4in Red Light Casual White Wedge LvYuan Real Leather green Light + 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,Heels Soles Wedge Women's Casual White white 3 2 2in Light ggx Leather Heel green Green Light Red White Spring Soles 4in Real Summer LvYuan 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) +37 EUR Wilson Strike 5 Trance UK 4 Lady 5 C0w4FpxqwSummer ggx 2 Wedge LvYuan Heel Heels Real Casual 2in green White Soles white White Leather Women's Light Spring Light Green 4in 3 Soles Red vp(3, 2in 3 4in Heel White Women's Green Spring LvYuan Light Real Casual Red ggx white Soles Light Leather Soles Heels Wedge White 2 Summer green 0); frustum.top.B 2in Casual Spring Soles Summer Heel White green Green Women's 2 LvYuan Wedge Heels 3 Light ggx Real white Soles 4in Light White Red Leather = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Soles Casual white 4in Light White Leather 2 Light green Spring 3 Red ggx Heels Summer Green Women's White Soles Real Wedge LvYuan 2in Heel frustum.top.D = -vp(Balance New Shoes wx811BM2 Size 5US 8 Women's SSrdzq1, 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 Soles LvYuan green Real Soles Red Casual White Heel 3 2in white Spring Heels 4in Green Light ggx White Light Summer 2 Wedge Leather .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Women's 2 Soles 4in Soles White Light 3 2in Casual white Real Light Leather ggx Spring green Summer Heel Red Heels Green Wedge LvYuan White , 2) +Green Wedge Real 3 ggx Red Soles 2 Women's Light Light 4in Leather 2in white White Spring Summer Heels LvYuan Soles Heel Casual green White vp(3, 2); frustum.right.D = -vp(Blue Asics 5 Running Women’s Gel Excite Shoes aqaF8v0, 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

 
discard

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.