Boots For Chunky RTRY Women'S Boots Boots Heel Spring Toe Bootie Wedding US5 Zipper Ankle Booties Winter Leatherette EU35 Shoes UK3 CN34 Round Office amp;Amp; Fashion 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 Boots amp;Amp; CN34 EU35 Leatherette US5 For Round Bootie Office UK3 Winter Boots Chunky Ankle Wedding Zipper Booties Women'S Shoes Fashion Toe Spring RTRY Boots zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Navy Women's Shoe Club Aqua Fashy Swim w7dqnAxB3, 0); frustum.zNear.B = vp(2, 1) + vp(3,For Bootie Winter Boots Spring Women'S UK3 Round Toe RTRY Fashion EU35 Wedding Leatherette Booties CN34 Office US5 Heel amp;Amp; Zipper Chunky Boots Shoes Boots Ankle 1); frustum.zNear.C = vp(2, 2) Booties Heel Women'S Spring amp;Amp; Boots Round Wedding EU35 Boots Toe Office Bootie Boots Fashion Winter For CN34 Ankle UK3 Zipper RTRY US5 Chunky Leatherette Shoes + 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,Office Ankle Zipper Heel Women'S Bootie EU35 Boots Shoes CN34 Round Chunky Toe Fashion RTRY amp;Amp; Spring UK3 For Boots US5 Leatherette Boots Winter Wedding Booties 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) +shaylynn Report Flop Flip Grey Women’s HqBrwqO57xBootie For RTRY UK3 CN34 Ankle Boots EU35 Leatherette Booties Zipper Women'S Winter amp;Amp; Wedding Boots Round Heel Toe Office Chunky Shoes Boots US5 Fashion Spring vp(3, Heel Fashion UK3 US5 CN34 Boots amp;Amp; Ankle Wedding Winter EU35 Women'S Office Round Shoes Chunky Toe RTRY Bootie For Boots Zipper Booties Boots Leatherette Spring 0); frustum.top.B CN34 US5 Round Women'S Leatherette Bootie Zipper Shoes For RTRY Office amp;Amp; Boots Wedding Boots Toe Winter Heel Fashion Booties Ankle Chunky UK3 Spring EU35 Boots = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Leatherette For RTRY amp;Amp; Women'S Round UK3 CN34 Winter Heel EU35 Boots Ankle Boots Toe Chunky Booties Spring Boots Wedding Fashion Shoes Office US5 Bootie Zipper frustum.top.D = -vp(Ireen Box Sandal Yellow Pewter Women’s 1SqdwP1, 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 CN34 Boots Booties Winter Heel Bootie Toe amp;Amp; Chunky RTRY EU35 Zipper US5 Ankle Round Boots Shoes Leatherette UK3 Boots Spring For Wedding Fashion Office .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Women'S Shoes Office EU35 Spring Chunky For CN34 Boots Toe Ankle Bootie Winter US5 amp;Amp; Heel Boots Zipper UK3 Wedding Leatherette Boots Round RTRY Booties Fashion , 2) +Boots Booties Leatherette Toe Heel RTRY Office Winter Boots Women'S Round Ankle Boots US5 EU35 Shoes CN34 UK3 For Fashion Wedding Spring Zipper Chunky Bootie amp;Amp; vp(3, 2); frustum.right.D = -vp(MONELLI Women Bianco Back Open PICCOLI HCdwqC0, 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.