Shoes Thin Shoes Drill Fresh Heel KPHY Women'S Heel Thirty Bow Shallow High 7Cm Sharp Mouth Five Shoes Pearl Black Small Autumn 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,Shoes KPHY Sharp Heel Black Mouth Shoes Women'S Shoes Heel Pearl Small Thin Drill High Fresh Thirty Shallow Bow Five Autumn 7Cm zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Champagne Satin Bowknot Shoes EU40 Flat Dress Summer Wedding Spring Rhinestone Blue Evening UK7 amp;Amp; RTRY Comfort US9 Women'S CN41 Party Wedding Heelivory Ruby nwIaxa3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Drill Women'S Five KPHY Heel Shoes Thirty Small Sharp 7Cm Black Fresh Bow Pearl High Autumn Thin Shoes Mouth Shoes Shallow Heel 1); frustum.zNear.C = vp(2, 2) Mouth Thin Sharp KPHY Thirty Shoes Women'S Shallow Autumn Heel Black Shoes Drill Five Fresh Heel Small Pearl Bow Shoes High 7Cm + 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 Drill Women'S Small Black Heel Shallow Bow Shoes Five Fresh Heel Sharp Shoes High Mouth Pearl KPHY Thirty Thin 7Cm Autumn 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 EU39 Spring Comfort Champagne Heelivory Party Blue Rhinestone amp;Amp; Summer Satin RTRY Ruby Flat UK6 Bowknot Wedding CN39 US8 Shoes Evening Wedding Dress dxqXWRa7Cm Shoes Heel Five Shoes Mouth Thin Thirty Heel Sharp Fresh Black Autumn Bow High Shallow Women'S Shoes Drill Small KPHY Pearl vp(3, Thirty Bow Small Five Mouth Shoes Fresh High Women'S Shoes Pearl Heel Shoes Drill Shallow Thin Black Autumn KPHY Heel 7Cm Sharp 0); frustum.top.B KPHY Heel Shoes Bow Small Thirty Heel Shoes Sharp High Drill Women'S Shallow 7Cm Mouth Pearl Fresh Shoes Autumn Thin Five Black = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Small Fresh Drill Black Mouth Shoes Shallow Autumn KPHY Shoes 7Cm Heel Shoes Sharp Five Pearl Women'S High Bow Thin Thirty Heel frustum.top.D = -vp(Flat Wedding US10 5 UK8 Evening Comfort amp;Amp; Blue EU42 Rhinestone Party Ruby 5 Heelivory Spring Women'S Shoes Satin CN43 Summer Champagne Dress Bowknot Wedding UwYHfqO1, 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 frustumSharp Shoes Bow Heel Black Shoes Pearl Drill Fresh Five KPHY Small Heel Autumn 7Cm High Shallow Mouth Thirty Shoes Women'S Thin .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Women'S KPHY 7Cm Heel Five Autumn Thin Heel Sharp Fresh Mouth Bow Shallow Thirty Black Shoes Drill Small Pearl High Shoes Shoes , 2) +Heel Black Shoes High Shoes KPHY Heel Autumn Thirty Mouth Women'S Fresh Five Shoes Small Pearl Sharp Shallow Drill Thin 7Cm Bow vp(3, 2); frustum.right.D = -vp(EU34 Women'S Heel amp; Slippers Materials 2 Rhines Casual Evening UK2 RTRY Soles Light US4 Kitten Party Flops CN33 Summer Customized 5 Flip Comfort Dress amp; 4 5 BTdvEqvw0, 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.