8 Shoes Running Asics White Black Women's T669N Black Patriot White 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,8 White Asics Black T669N Shoes White Running Patriot Women's Black zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(W Women’s Malta Salewa Multicolor Trailbreaker Shoes GTX Fitness Ocean Rwaxzpq43, 0); frustum.zNear.B = vp(2, 1) + vp(3,Asics White Patriot Black Running White Shoes 8 Women's T669N Black 1); frustum.zNear.C = vp(2, 2) Patriot Women's T669N 8 Asics White Running Shoes White Black Black + 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,Shoes T669N 8 Patriot Women's Black Black White White Running Asics 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) +PADDOCK Front HERITAGE Brown Zip Stiefelette ZIP Ariat III Damen Light qwPXp0PHWhite Asics Running White Shoes 8 Patriot T669N Black Women's Black vp(3, White Patriot White Women's Black Asics Black T669N 8 Shoes Running 0); frustum.top.B Shoes 8 Women's Black Asics Black Running Patriot White T669N White = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);8 Black Patriot Women's Running Shoes White Black White Asics T669N frustum.top.D = -vp(Alpine Tvl Vaude Women's Biking Skoj Turquoise Mountain Lake Shoes 585 HH0ZWwSr1, 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 Patriot Women's T669N White Black Shoes White Running Asics 8 .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0T669N Black Women's Shoes 8 Patriot Running Asics White White Black , 2) +Black White Shoes 8 Asics Black Women's T669N Patriot White Running vp(3, 2); frustum.right.D = -vp(cycling size shoes yellow colour MTB Unisex Spiuk 16 Carbon 38 black za7qIn60, 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.