コード例 #1
0
        private void Draw(float gModalGroup1, Point3D oldCoordinates, Point3D newCoordinates, float?radius, ArcCenters centers, FrameChangedEventArgs e)
        {
            ArcInterpolation interpolation;

            switch (gModalGroup1)
            {
            case 0:
                //Rapid
                AddLine(oldCoordinates.ToVector3(), newCoordinates.ToVector3(), RapidGeometry);
                break;

            case 1:
                //Linear
                AddLine(oldCoordinates.ToVector3(), newCoordinates.ToVector3(), LinearGeometry);
                break;

            case 2:
                //Arc clockwise
                interpolation = e.Frame.RValue.HasValue ? new ArcInterpolation(oldCoordinates, radius: radius.Value, newCoordinates, true) : new ArcInterpolation(oldCoordinates, centers, newCoordinates, true);

                for (int i = 0; i <= 100; i += 5)
                {
                    var point = interpolation.GetArcCoordinatesEx(i);
                    AddLine(oldCoordinates.ToVector3(), point.ToVector3(), LinearGeometry);
                    oldCoordinates = point;
                }
                AddLine(oldCoordinates.ToVector3(), newCoordinates.ToVector3(), LinearGeometry);
                break;

            case 3:
                //Arc Counter-clockwise
                if (e.Frame.RValue.HasValue)
                {
                    interpolation = new ArcInterpolation(oldCoordinates, radius: radius.Value, newCoordinates, false);
                }
                else
                {
                    interpolation = new ArcInterpolation(oldCoordinates, centers, newCoordinates, false);
                }
                for (int i = 100; i >= 0; i -= 5)
                {
                    var point = interpolation.GetArcCoordinatesEx(i);
                    AddLine(oldCoordinates.ToVector3(), point.ToVector3(), LinearGeometry);
                    oldCoordinates = point;
                }
                AddLine(oldCoordinates.ToVector3(), newCoordinates.ToVector3(), LinearGeometry);
                break;
            }
        }
コード例 #2
0
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var trafo = ((Transform3D)value).Value;
            var pos   = new System.Windows.Media.Media3D.Point3D(trafo.OffsetX, trafo.OffsetY, trafo.OffsetZ);

            return(pos.ToVector3());
        }
コード例 #3
0
 protected override void AssignDefaultValuesToSceneNode(SceneNode node)
 {
     if (node is ScreenSpacedNode n)
     {
         n.RelativeScreenLocationX = (float)this.RelativeScreenLocationX;
         n.RelativeScreenLocationY = (float)this.RelativeScreenLocationY;
         n.SizeScale          = (float)this.SizeScale;
         n.AbsolutePosition3D = AbsolutePosition3D.ToVector3();
         n.Mode = Mode;
     }
     base.AssignDefaultValuesToSceneNode(node);
     InitializeMover();
 }
コード例 #4
0
 public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
 {
     var trafo = ((Transform3D)value).Value;
     var pos = new System.Windows.Media.Media3D.Point3D(trafo.OffsetX, trafo.OffsetY, trafo.OffsetZ);
     return pos.ToVector3();
 }