public SharedLine(Point3D point1, Point3D point2, Vector3D normal1, Vector3D normal2)
     : this()
 {
     Point1 = point1;
     Point2 = point2;
     Normal1 = normal1;
     Normal2 = normal2;
 }
 static Octahedron()
 {
     // Double it in size
     for (int face = 0; face < 8; face++)
         for (int vertex = 0; vertex < 3; vertex++)
         {
             Point3D point = faces[face, vertex];
             faces[face, vertex] = new Point3D(2 * point.X, 2 * point.Y, 2 * point.Z);
         }
 }
        void InsertIntoCollection(List<SharedLine> sharedLines, Point3D pt1, Point3D pt2, Vector3D normal)
        {
            bool foundMatch = false;

            for (int i = 0; i < sharedLines.Count; i++)
            {
                if ((sharedLines[i].Point1 == pt1 && sharedLines[i].Point2 == pt2) ||
                    (sharedLines[i].Point1 == pt2 && sharedLines[i].Point2 == pt1))
                {
                    SharedLine sharedLine = sharedLines[i];
                    sharedLine.Normal2 = normal;
                    sharedLines[i] = sharedLine;
                    foundMatch = true;
                    break;
                }
            }

            if (!foundMatch)
            {
                SharedLine sharedLine = new SharedLine(pt1, pt2, normal, new Vector3D());
                sharedLines.Add(sharedLine);
            }
        }
 public SharedLine(Point3D point1, Point3D point2)
     : this(point1, point2, new Vector3D(), new Vector3D())
 {
 }