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