PDA

View Full Version : normals.?.?



eckiller
03-18-2000, 12:47 PM
Can someone give me a way to find the normal for each primitive using my class structure. My fragmented structure:

Object: holds an array of verts and an array of primitives that make up object.

Primitive: holds indices that make up this primitive.

VERTEX: x, y, z coordinates

I've been coding for quite awhile today and i just can't think how to get this w/ my class structure. I'd like to have a method in my Primitive class that calculates the normal for that particular primitive, it it possible to do so with just indices and no verts? Ideas and suggestionns please!!??

Thanks

Frank

Bob
03-19-2000, 07:14 AM
Hello

To obtain normals, you have to calculate them on your own. One normal for each polygon building up your object(s).

All you have to do, is loop through all polygons and calculate the normal, like this:

for(i=0; i<num_polys; i++)
{
p1=polygon[i].vertex_1
p2=polygon[i].vertex_2
p3=polygon[i].vertex_3

v1.x = p2.x - p1.x
v1.y = p2.y - p1.y
v1.z = p2.z - p1.z

v2.x = p3.x - p1.x
v2.y = p3.y - p1.y
v2.z = p3.z - p1.z

// use crossproduct to obtain normal
n[i].x = (v1.y * v2.z) - (v2.y * v1.z)
n[i].y = (v1.z * v2.x) - (v2.z * v1.x)
n[i].z = (v1.x * v2.y) - (v2.x * v1.y)
}

Just some quick pseudo code, but i think you get the point...

Then you have to normalize them (make them of unit length, length of 1).

Bob

fshana
03-20-2000, 10:09 AM
Check the advanced boards, I've responded to this with a unit normal implementation.
fs