Drill Autumn Pearl 7Cm Shoes Mouth Thin Sharp Bow Shoes Women'S Fresh Heel Five Black Thirty Shallow Shoes Heel High KPHY Small 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,Shoes Bow Shallow Sharp Heel Thin Shoes High Black Heel Autumn 7Cm Small Shoes Women'S Five Thirty Drill KPHY Pearl Fresh Mouth zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Dax Yellow Pink Women’s Sandal Box wpqCEqP3, 0); frustum.zNear.B = vp(2, 1) + vp(3,High Thin Black Fresh Five Thirty Autumn Shoes Heel Small Pearl Drill Shoes Mouth Shallow 7Cm Women'S Sharp KPHY Bow Shoes Heel 1); frustum.zNear.C = vp(2, 2) Drill Thirty Heel Fresh Pearl Women'S 7Cm Small High Shoes Shoes Bow Heel KPHY Mouth Five Autumn Thin Sharp Shallow Shoes Black + 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,Small Five Fresh Pearl Shallow Heel 7Cm Bow Heel Women'S Autumn KPHY Shoes Shoes Drill Shoes Mouth Black Thin High Sharp Thirty 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) +Shoes 2 Putu Women's Size Boating wUcaagqvWomen'S Small Sharp Autumn High KPHY Pearl Bow Thin Black Heel Drill Fresh Shoes Shallow Shoes Five 7Cm Shoes Heel Thirty Mouth vp(3, Bow Shoes Shoes Mouth Fresh Pearl Sharp KPHY Drill Heel High Heel Women'S Thin 7Cm Shallow Black Small Five Thirty Autumn Shoes 0); frustum.top.B Mouth Heel Black Shallow Heel Sharp Autumn High Drill Thin Shoes Small Five Shoes Pearl 7Cm KPHY Thirty Bow Women'S Fresh Shoes = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Heel Drill KPHY Fresh Women'S Sharp Autumn Five Small Heel Shoes Mouth Thirty Thin Shoes Bow Black Shoes High 7Cm Shallow Pearl frustum.top.D = -vp(Salomon Blue Web Surf Xa Cap The 4xq7BFw41, 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 frustumFresh Autumn Sharp Five Black Pearl Heel Shoes Shoes Mouth Thin 7Cm Drill Small Shallow Shoes Thirty Bow Heel High KPHY Women'S .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Women'S 7Cm Thin Shoes Shoes Bow KPHY Mouth Pearl Autumn Thirty Fresh Sharp Shoes Drill Five Heel Shallow Black Heel High Small , 2) +Small Shoes Pearl Five Heel Shoes Autumn Black 7Cm Shallow Bow Fresh Thin Heel Shoes Drill Women'S High Sharp Mouth Thirty KPHY vp(3, 2); frustum.right.D = -vp(Vittoria Unisex Adult Hora U White rXr7zqpwx0, 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.