G4Soon
June 10, 2001, 4:49pm
#1
Here’s my situation:

Let’s say I have 3 verticies: v1,v2 and v3.

how would I calculate a surface normal?

assume that when the points are laballed counter-clockwise relative to you, the normal vector points towards you.

example:

```
v1
```

v2

```
v3
```

the normal would be coming straight at you.

how would I calculate the exact surface normal vector using the 3 sets of x,y, and z values?

ngill
June 10, 2001, 7:38pm
#2
take the cross product… and by right hand rule the normal would face towards you.

cross product can also be seen as the determinant of these three vectors:

<i,j,k>
<v2-v1>
<v3-v1>

correct me if I am wrong… it’s been a little while

evil
June 10, 2001, 10:18pm
#3
You simply do (in pseudocode) :

rx1=v1x-v2x
ry1=v1y-v2y
rz1=v1z-v2z
rx2=v3x-v2x
ry2=v3y-v2y
rz2=v3z-v2z

nx=ry1rz2-rz1 ry2
ny=rz1rx2-rx1 rz2
nz=rx1ry2-ry1 rx2

Ok, now we have to normalize it (make length 1) :

len=sqrt(nxnx+ny ny+nznz)
if (len>0) {
nx =(1/len)
ny*=(1/len)
nz*=(1/len)
} else {
/* oops, you’ve got a problem */
}

That should be it. Enjoy

Note : this might be for clockwise, I simply ripped it from some working code of mine. Simply invert the normal for counterclockwise if that’s the case.

G4Soon
June 11, 2001, 11:41am
#4
Thanks, guys!

I actually just picked up an Algebra & Geometry textbook from my math teacher today, and got the necessary math from there. but thanks anyway!