Trying to comprehend clipping algorithm given by
ClipTriangle(triangle, plane) {
d0 = SignedDistance(plane, triangle.v0)
d1 = SignedDistance(plane, triangle.v1)
d2 = SignedDistance(plane, triangle.v2)
if {d0, d1, d2} are all positive {
return [triangle]
} else if {d0, d1, d2} are all negative {
return []
} else if only one of {d0, d1, d2} is positive {
let A be the vertex with a positive distance
compute B' = Intersection(AB, plane)
compute C' = Intersection(AC, plane)
return [Triangle(A, B', C')]
} else /* only one of {d0, d1, d2} is negative */ {
let C be the vertex with a negative distance
compute A' = Intersection(AC, plane)
compute B' = Intersection(BC, plane)
return [Triangle(A, B, A'), Triangle(A', B, B')]
}
}
Let consider case when one point inside frustum. I don't understand why normal direction of new clipped triangle is kept for all cases.
I do enclose awful drawing, but it shows that when upper vertex inside frustum - normal direction is negative (Assuming left handed coordinate system)
What do I get wrong about it? I'm sure I made a mistake somewhere.
Sorry for awful plot =(