internal TeethVisual3D addNewTeeth(Material material) { TeethVisual3D t = new TeethVisual3D(this); tc.Children.Add(t); if (selectedPoint != null) { Transform3DGroup transformGroup = new Transform3DGroup(); transformGroup.Children.Add(new TranslateTransform3D(selectedPoint.ToVector3D())); t.Transform = transformGroup; } int intID = getTeethIDint(t.Id); teethDictionaries.Add(intID, t.Id); if (material == null) { material = MaterialHelper.CreateMaterial(TeethVisual3D.getTeethColor(intID)); } ((GeometryModel3D)t.Content).Material = material; ((GeometryModel3D)t.Content).BackMaterial = material; selectedTeeth = t; return(t); }
internal List <GeometryModel3D> manualSegment(Point3DCollection points, Vector3DCollection vectors) { List <GeometryModel3D> models = new List <GeometryModel3D>(); //MeshGeometry3D worldMesh = GetMesh();//ToWorldMesh(); MeshGeometry3D worldMesh = ToWorldMesh(); for (var i = 1; i < points.Count; i++) { Point3D p0 = points[i - 1]; Vector3D n0 = vectors[i - 1]; Point3D pi = points[i]; Vector3D ni = vectors[i]; Point3D pp = new Point3D(0, 0, 0); Vector3D nn = Point3D.Subtract(p0, pp); if (i == 1) { nn = Point3D.Subtract(pi, pp); } var g1 = MeshGeometryHelper.Cut(worldMesh, pp, nn); this.Children.Add(new RectangleVisual3D { Origin = ToLocal(pp), Normal = nn, Fill = new SolidColorBrush(Colors.LightGoldenrodYellow), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Blue)) }); if (i > 1) { n0.Negate(); } //var geo = MeshGeometryHelper.Cut(worldMesh, p0, n0); var geo = MeshGeometryHelper.Cut(g1, p0, n0); this.Children.Add(new RectangleVisual3D { Origin = ToLocal(p0), Normal = n0, Fill = new SolidColorBrush(Colors.LightGoldenrodYellow), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Blue)) }); //Console.WriteLine(i+" = "+p0.ToString()); var geo1 = MeshGeometryHelper.Cut(geo, pi, ni); this.Children.Add(new RectangleVisual3D { Origin = ToLocal(pi), Normal = ni, Fill = new SolidColorBrush(Color.FromArgb(80, 255, 0, 0)), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Green)) }); //var geo2 = ToLocalMesh(geo1); var model = new GeometryModel3D(geo1, MaterialHelper.CreateMaterial(TeethVisual3D.getTeethColor(i))); models.Add(model); } return(models); }