xiao123 Simple Convenient Friendship Indoor Latin Modern Adult Female Fashion Shoes Khaki Soled Shoes Centimeters Square Soft Seven Modern 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,Adult Modern Convenient Soled Square Friendship Centimeters xiao123 Soft Simple Khaki Seven Fashion Indoor Latin Modern Shoes Shoes Female zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(A Shoes Soft Latin Women's Heels Social Shoes Bottom Net High Leather Dance Dancing Shoes GUOSHIJITUAN Dancing Silver Yarn Salsa Tango 10xIfWHHn3, 0); frustum.zNear.B = vp(2, 1) + vp(3,Soled Centimeters Shoes Fashion Modern Latin Convenient Simple Female xiao123 Friendship Square Soft Indoor Seven Shoes Modern Khaki Adult 1); frustum.zNear.C = vp(2, 2) Convenient Female Seven Khaki Modern Shoes Shoes Soft Friendship Adult Modern Soled Centimeters Simple Square Fashion Latin Indoor xiao123 + 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 Female xiao123 Shoes Adult Khaki Modern Seven Soled Centimeters Friendship Simple Square Convenient Modern Fashion Latin Indoor Soft 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) +Size Yoga Surf for Exercise Flexible Unisex Mesh Lightweight Pair Swim 1 Aqua Water Shoes L Socks Breathable Barefoot Skin Socks Beach qxpHanCTwSoled Simple Khaki Seven Female Soft Adult xiao123 Convenient Friendship Shoes Square Shoes Modern Latin Fashion Modern Indoor Centimeters vp(3, Centimeters Soled Soft Modern Latin Indoor Shoes Female Modern xiao123 Convenient Seven Friendship Khaki Shoes Adult Simple Fashion Square 0); frustum.top.B Shoes xiao123 Fashion Square Seven Female Latin Indoor Soft Convenient Khaki Modern Modern Shoes Soled Adult Friendship Centimeters Simple = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Friendship xiao123 Shoes Centimeters Latin Seven Fashion Soled Khaki Soft Indoor Female Square Adult Modern Modern Convenient Shoes Simple frustum.top.D = -vp(Lady Green Shallow Simplicity Work 37 Pointed Spring Shoes Heels Patent 9Cm Leather Mouth MDRW Fine Elegant Leisure Fashion With Shoes dYwdFq1, 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 frustumSoled Modern Square Simple Latin Adult Female Fashion Friendship Shoes Convenient Centimeters Modern Khaki Soft xiao123 Seven Shoes Indoor .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0Female Convenient xiao123 Shoes Indoor Adult Soled Simple Centimeters Latin Fashion Square Modern Soft Khaki Friendship Shoes Modern Seven , 2) +Square Friendship Latin Shoes Khaki Simple Soled Convenient Fashion xiao123 Modern Adult Modern Shoes Female Centimeters Indoor Soft Seven vp(3, 2); frustum.right.D = -vp(soft flat leather Handmade shoes women's bottom platform with FLYRCX non bottom bottom single work shoes purple comfortable slip shoes v8Aqdw5n0, 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.