private void AddBases(ModelVisual3D model, int number, double turns, double length) { var b = turns * 2 * Math.PI; var l = length; var p1 = 0d; var p2 = 3.14; for (int i = 0; i < number; i++) { var u = (double)i / (number - 1); var bu = b * u; var x1 = Math.Cos(bu + p1) + Math.Cos(bu + p1); var y1 = Math.Sin(bu + p1) + Math.Sin(bu + p1); var z = u * l; var x2 = Math.Cos(bu + p2) + Math.Cos(bu + p2); var y2 = Math.Sin(bu + p2) + Math.Sin(bu + p2); var pt1 = new Point3D(x1, y1, z); var pt2 = new Point3D(x2, y2, z); var pt3 = new Point3D(0, 0, z); var j = r.Next(4); var brush1 = BaseBrush1[j]; var brush2 = BaseBrush2[j]; var ts = new PipeVisual3D { Point1 = pt1, Point2 = pt3, Diameter = 0.4, Material = MaterialHelper.CreateMaterial(brush1) }; model.Children.Add(ts); var ts2 = new PipeVisual3D { Point1 = pt3, Point2 = pt2, Diameter = 0.4, Material = MaterialHelper.CreateMaterial(brush2) }; model.Children.Add(ts2); } }
/// <summary> /// Adds an edge. /// </summary> /// <param name="p1"> /// The start point. /// </param> /// <param name="p2"> /// The end point. /// </param> private void AddEdge(Point3D p1, Point3D p2) { var fv = new PipeVisual3D(); fv.BeginEdit(); fv.Diameter = this.Diameter; fv.ThetaDiv = 10; fv.Fill = this.Fill; fv.Point1 = p1; fv.Point2 = p2; fv.EndEdit(); this.Children.Add(fv); }