vXAxisVector = Vector(pt[1], pt[0]);
vXAxisVector = Normalize(vXAxisVector); // Use our function we created to normalize the normal (Makes it a length of one)
if(!bCounterClock)
{
dArea = 0.0;
dAreaX = 0.0;
dAreaY = 0.0;
dAreaZ = 0.0;
ptt.SetSize(4);
for(i=0;i<3;i++)ptt[i] = pt[i];
ptt[3] = ptt[0];
for(i=0;i<3;i++)dAreaZ += (ptt[i+1].x-ptt[i].x)*(ptt[i+1].y+ptt[i].y)*0.5;
for(i=0;i<3;i++)dAreaY += (ptt[i+1].x-ptt[i].x)*(ptt[i+1].z+ptt[i].z)*0.5;
for(i=0;i<3;i++)dAreaX += (ptt[i+1].y-ptt[i].y)*(ptt[i+1].z+ptt[i].z)*0.5;
dArea = dAreaZ;
if(fabs(dAreaY)>fabs(dArea))dArea = dAreaY;
if(fabs(dAreaX)>fabs(dArea))dArea = dAreaX;
vZAxisVector = Normal(pt);
if(dArea>0.0)
{
vZAxisVector = CPoint3D(0.0,0.0,0.0)-vZAxisVector;
}
}
else
vZAxisVector = Normal(pt);
vZAxisVector = Normalize(vZAxisVector); // Use our function we created to normalize the normal (Makes it a length of one)
vYAxisVector = Cross(vZAxisVector, vXAxisVector); // Take the cross product of our 2 vectors to get a perpendicular vector
// Now we have a normal, but it's at a strange length, so let's make it length 1.
vYAxisVector = Normalize(vYAxisVector); // Use our function we created to normalize the normal (Makes it a length of one)
dAxisCos[0][0] = vXAxisVector.x;
dAxisCos[0][1] = vYAxisVector.x;
dAxisCos[0][2] = vZAxisVector.x;
dAxisCos[1][0] = vXAxisVector.y;
dAxisCos[1][1] = vYAxisVector.y;
dAxisCos[1][2] = vZAxisVector.y;
dAxisCos[2][0] = vXAxisVector.z;
dAxisCos[2][1] = vYAxisVector.z;
dAxisCos[2][2] = vZAxisVector.z;
}