Пример #1
0
        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);
        }
Пример #2
0
        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;
        }