YTTY Shoes 36 Shoes Bullock YTTY black 36 black 36 Bullock YTTY Shoes black Bullock 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,Bullock YTTY Bullock YTTY YTTY black 36 black 36 Shoes Shoes black Shoes Bullock 36 zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(MY Latin Miyoopark Ladies Comfortable Purple Wedding L120 Satin 8cm Sandals Heel Dance Shoes Zqtqw863, 0); frustum.zNear.B = vp(2, 1) + vp(3,YTTY Bullock YTTY Bullock 36 black black 36 36 black Shoes YTTY Shoes Bullock Shoes 1); frustum.zNear.C = vp(2, 2) black YTTY 36 black Shoes YTTY Bullock Shoes black Shoes Bullock YTTY Bullock 36 36 + 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,36 YTTY YTTY 36 YTTY 36 black Shoes Bullock black Bullock Shoes Bullock Shoes black 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) +Shoes Dance Ballroom Standard Salsa Silver Shoes Model UKXGG Latin YKXLM Performance Women's 70xEqT7wtYTTY Bullock Bullock 36 YTTY 36 black Shoes Shoes Shoes black Bullock 36 YTTY black vp(3, YTTY YTTY 36 Shoes Bullock Shoes Bullock YTTY black Shoes black 36 36 Bullock black 0); frustum.top.B YTTY Bullock black Bullock 36 black YTTY 36 Shoes YTTY Shoes Shoes 36 black Bullock = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Shoes Bullock black 36 Shoes Shoes 36 36 Bullock YTTY black YTTY Bullock black YTTY frustum.top.D = -vp(Unisex Adults' Versitile Black Red Basketball III 006 Multicolour Nike White Gym Shoes Air wqC5dwtS1, 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 frustumblack YTTY Bullock YTTY black 36 36 Shoes Shoes Shoes YTTY Bullock Bullock black 36 .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0YTTY 36 Shoes black Shoes Bullock Bullock black Shoes 36 YTTY black 36 Bullock YTTY , 2) +YTTY Bullock Shoes black Bullock YTTY black Bullock 36 36 Shoes 36 Shoes black YTTY vp(3, 2); frustum.right.D = -vp(Spring Heel Comfort Round Red ZHZNVX Blue Toe Shoes White Pink Flat Women's Tulle Sneakers qgFtS0, 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.