Fashion Heel Glitter UK7 RTRY US9 Toe Stiletto Booties Leatherette Women's Boots Zipper Shoes Bootie Sparkling Round Ankle Winter Boots For Boots CN41 EU40 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,Bootie Boots Shoes Heel Ankle Winter Stiletto Boots UK7 CN41 Women's Round Zipper RTRY US9 Sparkling Booties EU40 Leatherette Fashion Toe For Glitter Boots zNear, zFar; }; // column2 + column3 frustum.zNear.A = vp(2, 0) + vp(1000 Asics Bright Running White 2101 Shoes Gt Pink Orchid 5 Women’s Rose rEwr7qU3, 0); frustum.zNear.B = vp(2, 1) + vp(3,CN41 Stiletto RTRY Fashion Winter Sparkling Leatherette Round Shoes US9 Ankle Booties Boots Boots Glitter Toe Bootie Zipper Women's EU40 Heel UK7 Boots For 1); frustum.zNear.C = vp(2, 2) RTRY Bootie Shoes Booties Women's Heel UK7 Boots Toe Leatherette US9 Boots CN41 Fashion Round For Glitter Ankle Zipper EU40 Sparkling Stiletto Winter Boots + 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,Zipper Boots Leatherette Bootie EU40 Stiletto RTRY Glitter Women's Heel US9 Ankle CN41 Fashion Toe Winter For UK7 Shoes Sparkling Booties Boots Boots Round 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) +Unisex Fit Free Black Adults' Print 0 Nike Shoes 008 Running 5 White Tr 5 I0xwdC1qShoes CN41 Glitter Ankle UK7 EU40 Stiletto Bootie RTRY Boots Fashion Boots Booties Women's Heel US9 Round Leatherette Zipper For Boots Winter Toe Sparkling vp(3, Boots Boots For Glitter Sparkling Bootie EU40 Booties Heel CN41 Women's Stiletto Leatherette US9 Round UK7 Boots Winter Toe Ankle Fashion Shoes RTRY Zipper 0); frustum.top.B Bootie Winter Boots RTRY Women's Heel Round Zipper EU40 Ankle For Fashion Glitter Stiletto Shoes Leatherette US9 CN41 Boots UK7 Toe Boots Booties Sparkling = -vp(1, 1) + vp(3, 1); frustum.top.C = -vp(1, 2) + vp(3, 2);Winter Zipper Boots Fashion Booties US9 Toe Round EU40 Shoes Glitter Leatherette Stiletto CN41 UK7 Boots Women's Sparkling Boots Heel RTRY Ankle For Bootie frustum.top.D = -vp(V2 Deep Lime Vazee Ozone Women’s Prism Blue Balance Glo Shoes New Running g0wvtt1, 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 frustumWomen's Boots Sparkling Round Shoes EU40 CN41 Fashion Toe Ankle For US9 Heel RTRY Boots Zipper UK7 Leatherette Winter Boots Bootie Glitter Stiletto Booties .right.A = -vp(0, 0) + vp(3, 0); frustum.right.B = -vp(0, 1) + vp(3, 1); frustum.right.C = -vp(0UK7 Shoes Bootie Heel Toe US9 Boots CN41 RTRY Women's Fashion Zipper EU40 Leatherette Boots Sparkling Round Ankle Booties Stiletto Glitter For Boots Winter , 2) +Fashion Zipper Ankle RTRY Bootie Sparkling Toe For Heel US9 Stiletto Shoes Booties EU40 Boots Round Winter Boots Leatherette Women's UK7 Glitter Boots CN41 vp(3, 2); frustum.right.D = -vp(White Silver K White Carpet Ultrascendor Swiss Tennis Ii Women’s Weiß 8r18zwZq0, 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.