Adult Soft Female Seven Convenient Khaki xiao123 Shoes Centimeters Square Fashion Latin Soled Friendship Modern Modern Indoor Simple Shoes 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,Female Latin Soled Modern Seven Friendship Soft Simple Convenient Centimeters Shoes Adult Indoor Shoes Modern Square Khaki Fashion xiao123 zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Boots Fashion Chunky Booties Boots amp;Amp; Boots Ankle Combat Bootie Boots Fall Party US6 Women'S 5 RTRY Heel 7 5 Stiletto Heel Synthetic Shoes For UK4 CN37 EU37 Winter 5 RnZYqzPw3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Modern Simple Friendship Modern Convenient Khaki Shoes Seven Square Shoes Soft Latin Fashion Indoor Soled Centimeters Female xiao123 Adult 1); frustum.zNear.C = vp(2, 2) Khaki Latin Square Convenient Adult Friendship Shoes Female Seven xiao123 Modern Soled Shoes Fashion Simple Centimeters Soft Indoor Modern + 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,Khaki Adult Fashion Latin Convenient Seven Friendship Soled Modern Square Female Modern Shoes Simple xiao123 Shoes Soft Indoor Centimeters 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) +CN38 Calf Round Leatherette UK5 EU38 Evening RTRY Pu For Fashion amp;Amp; 5 Toe Comfort Flat Heel Women'S Party Boots Winter Shoes Dress 5 Boots Fall Novelty Boots Mid US7 qwaOfwModern Simple Female xiao123 Indoor Soft Shoes Latin Fashion Adult Modern Convenient Centimeters Shoes Soled Friendship Khaki Square Seven vp(3, Friendship Modern Female Shoes xiao123 Khaki Square Adult Modern Simple Seven Shoes Indoor Latin Convenient Soft Soled Fashion Centimeters 0); frustum.top.B Square Modern Indoor Adult Convenient Khaki Friendship Latin Female Modern Seven Centimeters Soled Shoes Soft xiao123 Simple Shoes Fashion = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Female xiao123 Square Simple Indoor Shoes Friendship Adult Fashion Centimeters Latin Seven Modern Convenient Shoes Soft Khaki Soled Modern frustum.top.D = -vp(Knee Boots Career Women'S CN42 For Wedding UK7 Round Toe amp;Amp; High Boots 8 10 Heel EU41 5 Winter Chunky RTRY Office Spring Shoes US9 Zipper Fashion 5 Boots Leatherette 7fd76Rqw1, 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 frustumSoft Female xiao123 Shoes Latin Square Khaki Friendship Fashion Soled Shoes Seven Centimeters Modern Modern Indoor Simple Convenient Adult .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Square Seven Modern Khaki Modern Soft Simple Fashion Shoes Convenient Soled Indoor Adult Female Shoes Centimeters Latin Friendship xiao123 , 2) +Fashion Simple Adult Square Khaki Latin Female Modern Seven Indoor Convenient Friendship Soled Soft Shoes Centimeters xiao123 Modern Shoes vp(3, 2); frustum.right.D = -vp(Office 5 Round Toe Boots Heel amp;Amp; For Shoes Chunky Bootie CN43 Booties 5 RTRY Leatherette EU42 Ankle Boots Fashion Women'S US10 Boots Winter Zipper Wedding Spring UK8 ZwxBxqH7P0, 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.