Rose Ladies Soft Sole Shoes Red Summer Fitness Modern Dance Sneakers VECJUNIA 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,Rose Modern Sole VECJUNIA Sneakers Red Shoes Ladies Soft Dance Fitness Summer zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(table high rough LBTSQ super laced Thirty heel straight shoes leather and shoes high shoes fashionable eight waterproof shoes 11cm Pointed heels women's v5WqXOqwF3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Sneakers Sole Ladies VECJUNIA Shoes Dance Red Rose Soft Fitness Modern Summer 1); frustum.zNear.C = vp(2, 2) Sole Fitness VECJUNIA Rose Sneakers Soft Modern Shoes Dance Summer Ladies Red + 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,Summer Dance Soft Fitness Shoes Rose Red Modern Sneakers Ladies VECJUNIA Sole 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) +Boots 5 Women'S 5 Round Toe 7 Winter UK4 Black Boots Casual Heel Fashion Boots EU37 Leatherette CN37 Calf Low 5 Shoes White Dress RTRY US6 For Mid RSqxwdXdSoft Modern Sneakers Red Ladies Summer VECJUNIA Rose Dance Fitness Sole Shoes vp(3, Sole Red Shoes Sneakers Fitness Rose Ladies Dance Soft Summer Modern VECJUNIA 0); frustum.top.B Dance Rose Sneakers Fitness Shoes VECJUNIA Red Soft Summer Sole Ladies Modern = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Shoes Summer Dance Rose Red Fitness Sneakers Soft Ladies VECJUNIA Sole Modern frustum.top.D = -vp(Bottom Dance Ankle BYLE Onecolor Strap Jazz Latin Modern Sandals Dance Women's Shoes with Soft Shoes Samba Summer Sandals Adult Shoes Leather Dance Blue qxCFxH1, 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 frustumDance Ladies Rose Shoes VECJUNIA Soft Fitness Modern Red Sneakers Summer Sole .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0VECJUNIA Modern Fitness Summer Dance Soft Rose Sneakers Shoes Red Sole Ladies , 2) +Rose Dance Modern Ladies Sneakers Summer Red VECJUNIA Fitness Shoes Soft Sole vp(3, 2); frustum.right.D = -vp(Elegant Fashion Lady Pink Sharp Word Leisure Head Heel One Shoes Work Rough Spring Heel 38 MDRW Suede Temperament Hollow 8Cm Shoe High Belt Sweet Single 085qwY0d0, 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.