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) }); }
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 }); } }