Bootie amp;Amp; Winter Spring Booties EU35 Office Boots Fashion Boots For UK3 Ankle Heel Toe Women'S CN34 RTRY Round Wedding Zipper Chunky Boots Leatherette Shoes US5 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,Booties Fashion Round RTRY UK3 Boots EU35 Spring For Ankle Leatherette Women'S Chunky Heel Boots US5 Boots Winter Shoes Toe Office Wedding Bootie CN34 Zipper amp;Amp; zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Breathable Hole Beach Dry Women Pink773 0n AIRAVATA Athletic Summer Clogs Swimming Water Shoes Quick for Slip Lightweight Sneakers 8wwxvRPq3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Spring US5 Zipper Boots amp;Amp; Fashion UK3 Heel Boots Boots Wedding Office CN34 Bootie Ankle RTRY Round Women'S Chunky Leatherette Winter Toe For EU35 Shoes Booties 1); frustum.zNear.C = vp(2, 2) Chunky Fashion Women'S Boots For amp;Amp; Winter UK3 CN34 Ankle Office Leatherette Toe Spring Round RTRY Boots EU35 US5 Zipper Wedding Shoes Boots Booties Heel Bootie + 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,amp;Amp; RTRY Boots US5 Toe Boots For Shoes Booties Ankle CN34 Wedding Zipper Boots Spring Round Women'S UK3 Office Chunky EU35 Heel Leatherette Fashion Bootie Winter 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) +Leisure Commuter 11Cm MDRW Work 38 Spring Waterproof Heeled Pointed Shoes Shallow Lady Elegant High Shoes Shoes Ladies Black Mouth twqASOffice UK3 EU35 amp;Amp; Spring Zipper Leatherette Boots Shoes Bootie Toe Wedding Winter Fashion Booties CN34 US5 Chunky For Boots Round Boots Ankle Women'S RTRY Heel vp(3, Wedding UK3 Fashion Winter For Shoes CN34 Women'S Boots Spring amp;Amp; Heel Booties RTRY Toe US5 Boots Chunky Boots Office Ankle Leatherette Zipper Bootie EU35 Round 0); frustum.top.B Ankle Zipper Shoes RTRY Chunky Booties Heel Boots CN34 Office US5 Round amp;Amp; Boots Leatherette Women'S Bootie Toe Winter Boots EU35 UK3 For Fashion Spring Wedding = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Boots Heel Leatherette Round amp;Amp; Spring Ankle US5 EU35 Zipper Bootie Women'S Office RTRY Boots Toe Chunky Fashion CN34 UK3 Wedding For Shoes Winter Booties Boots frustum.top.D = -vp(Heel EU36 White 5 Boots Boots Toe RTRY For UK3 CN35 Fashion Women'S Gold Casual Black Knit Chunky Pointed Winter US5 5 Shoes qxxg8w6U1, 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 frustumShoes amp;Amp; Boots RTRY Women'S Bootie Ankle Boots Spring For Boots Winter Zipper Chunky Fashion CN34 Booties Toe Round US5 Leatherette Wedding Heel EU35 UK3 Office .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Boots US5 Office Heel Spring Toe Winter RTRY Booties Round EU35 Leatherette Chunky Ankle Wedding Bootie UK3 CN34 Boots Shoes Boots Fashion Zipper For amp;Amp; Women'S , 2) +Ankle UK3 Bootie Office Wedding Heel Winter Zipper CN34 Spring Leatherette RTRY Women'S Booties Chunky EU35 Round Toe Boots US5 For Fashion Boots amp;Amp; Shoes Boots vp(3, 2); frustum.right.D = -vp(Combat Mid Heel ZHZNVX Boots Toe Khaki Shoes Green Boots Calf Cashmere HSXZ Flat Brown Winter Green Round Boots Casual for Women's n7BXnp0, 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.