private static void CreateFaceLabel(Viewport3D myVP, Face f, TranslateTransform3D ttmove) { HalfEdge he = f.FindLongestEdge(); xyz p1 = he.Center(); xyz p2 = f.Measure(he, p1); xyz v = p2 - p1; double dist = v.magnitude(); xyz c = p1 + v / 2; c += f.UnitNormal() * .001; Point3D center = wpfmisc.fixPoint(c); Vector3D over = wpfmisc.fixVector(he.UnitVector()); Vector3D up = wpfmisc.fixVector(he.GetInwardNormal()); double height; if (dist <= 1) { height = dist / 3; } else if (dist < 10) { height = 1; } else { height = 2; } // TODO the following isn't a very pretty hack if (f.name.Length * height > he.Length()) { height = he.Length() / f.name.Length; } ModelVisual3D mv3d = wpfmisc.CreateTextLabel3D(f.name, Brushes.Black, false, height, center, over, up); if (ttmove != null) { mv3d.Transform = ttmove; } myVP.Children.Add(mv3d); }