Пример #1
0
        private Vector3 MakeTriangleVertex(MarkableVertex a, MarkableVertex b, float isoLevel)
        {
            const float MinRatio = 0.00001f;

            if (Math.Abs(isoLevel - a.IsoLevel) < MinRatio)
            {
                return(a.Position);
            }
            if (Math.Abs(isoLevel - b.IsoLevel) < MinRatio)
            {
                return(b.Position);
            }
            if (Math.Abs(a.IsoLevel - b.IsoLevel) < MinRatio)
            {
                return(a.Position);
            }

            float ratio = (isoLevel - a.IsoLevel) / (b.IsoLevel - a.IsoLevel);

            return(new Vector3()
            {
                X = a.Position.X + ratio * (b.Position.X - a.Position.X),
                Y = a.Position.Y + ratio * (b.Position.Y - a.Position.Y),
                Z = a.Position.Z + ratio * (b.Position.Z - a.Position.Z)
            });
        }
Пример #2
0
 private static void AddTriangle(MarkableVertex a, MarkableVertex b, MarkableVertex c, List <Vector3[]> triangles)
 {
     if (a.Marked && b.Marked && c.Marked)
     {
         triangles.Add(new Vector3[] { a.Position, b.Position, c.Position });
     }
 }