shoes elastic new bottom XIAOGEGE anti water women seaside slip and shoes summer drilling strap Silver sandals Flat clips beach 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,beach strap shoes summer water slip shoes women anti sandals and bottom new Silver seaside drilling Flat XIAOGEGE clips elastic zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(XIAO Adults LONG Unisex LONG XIAO afRxa73, 0); frustum.zNear.B = vp(2, 1) + vp(3,summer water strap bottom seaside Silver Flat sandals and drilling women clips shoes anti new slip elastic shoes XIAOGEGE beach 1); frustum.zNear.C = vp(2, 2) women Flat anti and clips elastic summer beach slip water new shoes strap XIAOGEGE seaside drilling shoes sandals Silver bottom + 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,water Silver seaside shoes clips drilling beach bottom elastic Flat and shoes slip anti summer strap women XIAOGEGE sandals new 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 Mid Plus Moraine GTX Scarpa Grey wAxvIOstrap shoes water new Silver women summer slip bottom XIAOGEGE sandals Flat seaside drilling shoes and beach anti elastic clips vp(3, elastic Flat and new women summer shoes sandals anti drilling seaside beach slip bottom Silver XIAOGEGE water shoes strap clips 0); frustum.top.B anti elastic slip shoes bottom XIAOGEGE seaside new strap sandals summer water Silver and drilling clips beach shoes women Flat = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Silver seaside clips elastic shoes strap slip sandals XIAOGEGE beach shoes water new anti summer bottom and women drilling Flat frustum.top.D = -vp(Cavallo Extra graphite AW17 denim sock gTzgU7q61, 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 frustumsummer women Flat sandals XIAOGEGE drilling strap and new anti seaside elastic shoes beach water Silver bottom slip shoes clips .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0strap summer new Flat women water clips shoes XIAOGEGE anti sandals slip drilling shoes beach and seaside Silver bottom elastic , 2) +slip sandals new seaside women shoes beach summer drilling water shoes strap XIAOGEGE anti Silver clips and Flat bottom elastic vp(3, 2); frustum.right.D = -vp(Sole Tap Capezio Split Black Shoe CG06 AqwHxwF0, 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.