Calculate ordinary face
, , . ( ) . , .
x0, x1, x2 - ,
vector3 get_normal(vector3 x0, vector3 x1, vector3 x2)
{
vector3 v0 = x0 - x2;
vector3 v1 = x1 - x2;
vector3 n = cross(v0, v1);
return normalize(n);
}
, :
, ' u v , , u, , v u. (u, v).
/ , , , (CCW) (CW). .
, , x3 - , .
| x0.x x0.y x0.z 1 |
| x1.x x1.y x1.z 1 |
| x2.x x2.y x2.z 1 |
| x3.x x3.y x3.z 1 |
- > 0:
x3 + , CCW { x0, x1, x2 } - < 0:
x3 - , CCW { x0, x1, x2 } - = 0:
x3 { x0, x1, x2 }
( ) . , { x0, x1, x2 } , { x2, x0, x1 } { x1, x2, x0 }.
, , . , { x0, x1, x2 } { x1, x0, x2 }.
, : , . , .