コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mat"></param>
        public override void TransformBy(Matrix2D mat)
        {
            var pt0 = GetPointAtParam(StartParam);
            var pt1 = GetPointAtParam((StartParam + EndParam) / 2);
            var pt2 = GetPointAtParam(EndParam);

            pt0 *= mat;
            pt1 *= mat;
            pt2 *= mat;
            var vec = MinorAxis * mat;

            Minor    = vec.Length;
            vec      = MajorAxis * mat;
            Major    = vec.Length;
            Center  *= mat;
            Rotation = vec.Angle;
            var vec0 = pt0 - Center;
            var vec2 = pt2 - Center;

            StartAngle  = vec0.Angle - Rotation;
            EndAngle    = vec2.Angle - Rotation;
            IsClockWise = Vector2D.IsClockWise(vec0, pt1 - Center, vec2);
        }
コード例 #2
0
 public Vector2D Mirror(Vector2D vec)
 {
     return(TransformBy(Matrix2D.Mirror(vec)));
 }
コード例 #3
0
 /// <summary>
 /// 获取旋转后的向量
 /// </summary>
 /// <param name="angle"></param>
 /// <returns></returns>
 public Vector2D RotateBy(Angle angle)
 {
     return(TransformBy(Matrix2D.Rotation(angle)));
 }
コード例 #4
0
ファイル: Entity2D.cs プロジェクト: zixuan203344/Pycad
 public abstract void TransformBy(Matrix2D mat);
コード例 #5
0
ファイル: LineSegment2D.cs プロジェクト: zixuan203344/Pycad
 public override void TransformBy(Matrix2D mat)
 {
     StartPoint *= mat;
     EndPoint   *= mat;
 }
コード例 #6
0
ファイル: Matrix2D.cs プロジェクト: zixuan203344/Pycad
 /// <summary>
 /// 按直线的镜像矩阵
 /// </summary>
 /// <param name="start"></param>
 /// <param name="end"></param>
 /// <returns></returns>
 public static Matrix2D Mirror(Point2D start, Point2D end)
 {
     return(Matrix2D.Mirror(start, end - start));
 }
コード例 #7
0
ファイル: Matrix2D.cs プロジェクト: zixuan203344/Pycad
 /// <summary>
 ///
 /// </summary>
 /// <param name="line"></param>
 /// <returns></returns>
 public static Matrix2D Mirror(LineSegment2D line)
 {
     return(Matrix2D.Mirror(line.StartPoint, line.EndPoint));
 }