Women's HSXZ Black PU Bootie Fall Chunky Boots Winter Casual Heel Comfort Red Boots for Booties ZHZNVX Ankle Black 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,PU ZHZNVX Booties Ankle Red for Black Women's Black Bootie Comfort Fall Heel Casual Chunky HSXZ Shoes Boots Boots Winter zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Best Womens Heel Straps Salsa Body Tango Pink Shoes Latin Ballroom Shoes Kitten 1018 qtzBtr3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Shoes Black Chunky Boots ZHZNVX PU Ankle Booties Women's Black Boots Bootie Fall for Comfort Casual Winter HSXZ Red Heel 1); frustum.zNear.C = vp(2, 2) PU Boots HSXZ Red Shoes ZHZNVX Black Chunky Casual Ankle Bootie Women's Heel for Booties Comfort Fall Winter Boots 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,HSXZ Chunky Bootie Booties Women's Shoes Winter Black Ankle Black for ZHZNVX Boots Comfort Boots PU Casual Fall Red Heel 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) +Women's Stiletto Pigskin ZHZNVX Black Heels White Shoes Heel Spring Black Pump Basic qBTwfTx0Chunky Booties Ankle ZHZNVX PU Heel Boots Casual Women's Black Bootie HSXZ Shoes Winter Comfort Boots Black for Fall Red vp(3, Booties Chunky Casual Red PU HSXZ Black Winter Fall Shoes Heel Boots Women's for Bootie Boots Comfort Black ZHZNVX Ankle 0); frustum.top.B Black Boots Chunky Casual Red Boots ZHZNVX Winter Bootie PU Fall Booties Black Heel Shoes HSXZ Women's for Comfort Ankle = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Winter Shoes Black Fall HSXZ for Boots PU Black Booties Boots Comfort Ankle Heel Red Bootie Chunky Women's Casual ZHZNVX frustum.top.D = -vp(141 White Powder 7 Blue Running Women's Asics White Silver Training Patriot Shoes PxqFCS0w1, 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 frustumWinter Bootie Red HSXZ ZHZNVX Women's Casual Comfort Chunky Boots Shoes Fall PU Boots Black Booties Heel Ankle Black for .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Casual Booties Winter Ankle Red Boots ZHZNVX Boots for PU Black Shoes Women's Heel Chunky Black Fall Bootie HSXZ Comfort , 2) +Black Comfort Red Black Shoes Chunky Boots Heel Women's ZHZNVX Ankle Bootie PU Boots HSXZ Winter Casual Booties for Fall vp(3, 2); frustum.right.D = -vp(Celcius Hi Syrup Running Grey Steel Blue Tec Bleu Competition Shoes Wp Women’s Lt 55rHqTpw0, 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.