Exemplo n.º 1
0
        public override Point2D GetPointAtParam(double par)
        {
            Vector2D vec   = new Vector2D(Radius, StartAngle);
            Angle    angle = new Angle(IsClockWise ? -par : par);

            return(Center + vec.RotateBy(angle));
        }
Exemplo n.º 2
0
        public override Point2D GetPointAtParam(double par)
        {
            Angle    angle = StartAngle + new Angle(IsClockWise ? -par : par);
            Vector2D vec   =
                new Vector2D(
                    Major * Math.Cos(angle),
                    Minor * Math.Sin(angle));

            return(Center + vec.RotateBy(Rotation));
        }
Exemplo n.º 3
0
        public CircleArc2D(Point2D start, Point2D end, double bulge)
        {
            int sign = Math.Sign(bulge);

            IsClockWise = sign == -1;
            bulge       = Math.Abs(bulge);

            Point2D  cen = (start + end) / 2;
            Vector2D vec = (end - start) / 2;

            vec    = vec.RotateBy(Angle.Degree90);
            vec   *= (1 - bulge) * sign;
            Center = cen + vec;

            vec        = start - Center;
            Radius     = vec.Length;
            StartAngle = vec.Angle;
            EndAngle   = (end - Center).Angle;
        }