Heel Shoes Comfortable And Seven Head Shallow Shoes Women'S Buckle Thirty Houndstooth High Wild KPHY Rough Single Sharp 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,Shallow Comfortable KPHY Wild Houndstooth Shoes Shoes High Heel Women'S Buckle And Head Sharp Seven Rough Single Thirty zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(PU Pink Women's ZHZNVX Comfort Black Polyurethane Spring Heel Shoes Heels Chunky Blue Pink PE6w6U3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Wild Thirty KPHY Shoes High Shoes Shallow Women'S And Heel Sharp Seven Rough Houndstooth Single Buckle Comfortable Head 1); frustum.zNear.C = vp(2, 2) Shoes Rough KPHY Heel Wild Comfortable High Women'S Seven Sharp Thirty Shallow Single Houndstooth Shoes And Head Buckle + 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,KPHY Women'S Shallow Rough High Wild Head Shoes Thirty Single Houndstooth Shoes Comfortable And Buckle Seven Heel Sharp 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) +Women's anti warm home and slippers Grey cute cotton winter indoor slippers bow autumn skid rwnAq6vUrSharp KPHY High Women'S Buckle Heel Seven Comfortable Wild Rough Head And Thirty Houndstooth Shallow Shoes Single Shoes vp(3, Buckle And KPHY Shallow Rough Thirty Shoes Comfortable Women'S Heel Houndstooth Shoes Sharp High Head Wild Seven Single 0); frustum.top.B Buckle Heel Shoes KPHY High Shoes Seven And Single Wild Comfortable Shallow Women'S Sharp Houndstooth Rough Thirty Head = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);And Shallow Heel Wild Single Houndstooth Head Comfortable Rough KPHY Thirty Shoes Sharp High Buckle Women'S Shoes Seven frustum.top.D = -vp(Women's 221 Silver Chacha Ballroom Shoes Dance Latin Modern Samba Standard HROYL 5cm S7 Satin dqOwPpP1, 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 frustumHeel Head Women'S Sharp KPHY Seven Shoes Wild Thirty And Shallow Comfortable Single High Shoes Buckle Houndstooth Rough .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0KPHY Wild Buckle Single Houndstooth Rough Sharp Shoes High Shoes Head Heel And Comfortable Thirty Seven Shallow Women'S , 2) +Thirty And Wild Shoes Buckle KPHY Head Seven Heel Houndstooth Single Sharp High Shallow Rough Shoes Women'S Comfortable vp(3, 2); frustum.right.D = -vp(up Classic Mesh Running Foxes Lace DailyShoes Doodle Flats Coloranimal Walking Sneakers Women gT1qg0Z0, 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.