3 using System
.Windows
.Media
;
4 using System
.Windows
.Media
.Media3D
;
6 namespace Primitive3DSurfaces
8 public abstract class Primitive3D
: ModelVisual3D
13 _content
.Geometry
= Tessellate();
16 public static DependencyProperty MaterialProperty
=
17 DependencyProperty
.Register(
20 typeof(Primitive3D
), new PropertyMetadata(
21 null, new PropertyChangedCallback(OnMaterialChanged
)));
23 public Material Material
25 get { return (Material)GetValue(MaterialProperty); }
26 set { SetValue(MaterialProperty, value); }
29 internal static void OnMaterialChanged(Object sender
, DependencyPropertyChangedEventArgs e
)
31 Primitive3D p
= ((Primitive3D
)sender
);
33 p
._content
.Material
= p
.Material
;
36 internal static void OnGeometryChanged(DependencyObject d
)
38 Primitive3D p
= ((Primitive3D
)d
);
40 p
._content
.Geometry
= p
.Tessellate();
43 internal double DegToRad(double degrees
)
45 return (degrees
/ 180.0) * Math
.PI
;
48 internal abstract Geometry3D
Tessellate();
50 internal readonly GeometryModel3D _content
= new GeometryModel3D();