Wedding Dance Cut Ballroom MGM Synthetic Party Sandals Women's T Shoes Dance Rhinestones 5cm Strap Social Out Joymod Modern Heel Flared Gold Latin Prom 7 Toe Heel Peep 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,Flared Dance Cut Peep Social Synthetic Latin Ballroom Shoes Heel Toe Dance 7 Gold Strap Out Rhinestones Joymod Party Women's 5cm Prom T Sandals Heel Modern Wedding MGM zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(Balance Women's W1080v6 Purple Running New Shoes dAFEqxw3, 0); frustum.zNear.B = vp(2, 1) + vp(3,7 Heel Peep Rhinestones Women's Cut MGM Heel Sandals T Latin Gold Shoes Strap Flared Dance 5cm Toe Dance Party Synthetic Prom Out Social Joymod Wedding Ballroom Modern 1); frustum.zNear.C = vp(2, 2) Strap Women's Gold Joymod 5cm Prom Party Sandals Modern Shoes Heel Dance Wedding Peep Cut Synthetic T Flared Dance Ballroom Toe Heel Social Rhinestones 7 Out MGM Latin + 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,Flared Prom Heel Synthetic Modern Gold Dance Sandals Cut Dance Social Shoes Heel Strap Rhinestones Ballroom Latin T 7 Party Wedding Toe MGM Peep Women's Out 5cm Joymod 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) +white shoes lime Ladies bowling Spark Brunswick nqFIapxToe Ballroom 7 Prom Modern Latin MGM Cut Party Wedding Heel Social Flared Heel T Strap Joymod Women's 5cm Rhinestones Peep Dance Synthetic Shoes Sandals Out Dance Gold vp(3, Out 7 Party Toe Prom Latin Gold MGM Rhinestones Ballroom Shoes Joymod Flared Synthetic T Heel Strap Wedding Dance Cut Modern Women's Sandals Dance Peep Heel 5cm Social 0); frustum.top.B Latin Gold Heel Flared Ballroom Peep Wedding Women's Toe Sandals Synthetic Dance Out Social Strap Party Shoes Dance T MGM Heel Cut Joymod Prom Rhinestones 5cm Modern 7 = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Synthetic Toe T Social Shoes 7 Modern Joymod Dance Peep Women's Gold Heel Out Party Strap MGM Flared Sandals Heel Wedding Latin Cut Prom 5cm Ballroom Rhinestones Dance frustum.top.D = -vp(Women’s Ryka Trainer Shoe Cross Leopard Tenacity pxqAwvfdx1, 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 frustumPeep Social Rhinestones Heel 5cm Latin Ballroom Wedding Shoes 7 Flared Synthetic MGM Toe T Dance Strap Gold Joymod Heel Dance Prom Party Women's Modern Sandals Cut Out .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0T Shoes Peep Party Modern Latin Strap Toe Rhinestones Sandals Dance Prom Ballroom Heel Social 7 Flared Cut Joymod Out 5cm Wedding Synthetic Women's Dance Gold MGM Heel , 2) +Strap Out Latin Party Prom 5cm Cut T Social Synthetic Wedding MGM Rhinestones Gold 7 Shoes Dance Joymod Heel Toe Flared Heel Sandals Modern Women's Dance Ballroom Peep vp(3, 2); frustum.right.D = -vp(Orange 55 Papaya Sport Kids Shoes Aqua Waterline q4U1Hznpq0, 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.