private void CalculatePolygonCenter() { Point milieu; Vector v1; Vector v2; //Le CENTRE DE GRAVITE du polygone est situe au 2/3 d'une des medianes //Nous allons tracer la mediane a partir du pts[0]. il nous faut donc //le point milieu du segment pts[1],pts[2] v1 = new Vector(_b, _c); v1.DivideBy(2); v2 = new Vector(_b.X, _b.Y, _b.Z); v2.AddVector(v1); milieu = new Point(v2.X, v2.Y, v2.Z); //Trouvons la mediane v1 = new Vector(_a, milieu); v1.MultiplyBy(2 / 3); v2 = new Vector(_a.X, _a.Y, _a.Z); v2.AddVector(v1); _polyCenter = new Point(v2.X, v2.Y, v2.Z); }
public bool IsFrontFacing(Triangle triangle) { // on prend en compte que les normales sont unitaires... double dot = _polyNormal.DotProduct(triangle._polyNormal); Vector vecProj = new Vector(_polyNormal); vecProj.MultiplyBy(dot); vecProj.Normalise(); vecProj.AddVector(_polyNormal); vecProj.Normalise(); if(vecProj.Norm >= -Definition.EPSILON && vecProj.Norm <= Definition.EPSILON) return false; else return true; }