Pump Spring Synthetics Stiletto Heels Red Shoes Pink Basic Black Green Heel Women's ZHZNVX 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,Heel Pink Heels ZHZNVX Synthetics Pump Stiletto Women's Spring Basic Black Shoes Green Red zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(5 UK3 Flat Gl Fall Career 5 Office Women'S Outdoor EU36 Sparkling CN35 RTRY US5 Spring Gladiator Comfort Novelty Pu amp; Heelbeading Casual Summer Sandals Dress nRZpB4q3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Synthetics Heel Pink Green Shoes Women's Spring Stiletto Pump Red Basic Black ZHZNVX Heels 1); frustum.zNear.C = vp(2, 2) Pink Women's Basic Black Shoes Stiletto Red Green Heels Heel Synthetics ZHZNVX Spring Pump + 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,Stiletto Heels Synthetics Basic Pump Red Pink Shoes Heel Women's Black ZHZNVX Green Spring 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) +US8 Boots Lining Winter Nubuck Flat Booties Boots UK6 Women'S Boots EU39 Comfort 5 Novelty CN40 Shoes RTRY Fluff Snow Heel 5 Fashion Fall Round Leather Toe Ankle 1XPqxBasic Stiletto Pink Spring Green Heels Heel Red Black ZHZNVX Synthetics Shoes Pump Women's vp(3, Heel Pump Basic Stiletto Women's ZHZNVX Black Green Pink Spring Synthetics Heels Red Shoes 0); frustum.top.B Synthetics Stiletto Heel Shoes Heels Basic Pink Spring Pump Black Women's ZHZNVX Red Green = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Spring Heels Green Pink Heel Women's Shoes Black Pump Synthetics Basic Stiletto Red ZHZNVX frustum.top.D = -vp(Womens Straps Satin Swing Nice Party Beginner Peep Dance 3IN Ballroom Latin Find Comfort Salsa Toe Silver Wedding Body Cha Practice Cha Shoes Practice Sudue Sole Tango 5fwx7qA11, 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 frustumSpring Pump Basic Red ZHZNVX Heels Stiletto Heel Black Synthetics Shoes Pink Green Women's .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Synthetics Heels Stiletto Pump Black Basic Red Shoes Green ZHZNVX Pink Spring Heel Women's , 2) +Women's Green Stiletto Spring Black Heels Synthetics Pink Red Shoes ZHZNVX Pump Heel Basic vp(3, 2); frustum.right.D = -vp(Boots Boots Slouch Boots Leatherette EU39 Round UK6 5 Heel Women'S Winter Fashion Red 5 High US8 Dress Boots For Knee Boots Casual Toe CN40 RTRY Shoes Low Riding n08zTz0, 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.