Beispiel #1
0
        public static ProjectedCircle Project(Circle circle, Layer layer, Matrix4 transform)
        {
            // find axis endpoints
            var rightVector = Vector.RightVectorFromNormal(circle.Normal);
            var upVector    = circle.Normal.Cross(rightVector).Normalize();
            var pt          = transform.Transform(circle.Center + (rightVector * circle.Radius));
            var qt          = transform.Transform(circle.Center + (upVector * circle.Radius));
            var m           = transform.Transform(circle.Center);

            return(ProjectedCircle.FromConjugateDiameters(circle, layer, m, pt, qt));
        }
Beispiel #2
0
        public static ProjectedArc Project(Arc arc, Layer layer, Matrix4 transform)
        {
            // find the containing circle
            var rightVector = Vector.RightVectorFromNormal(arc.Normal);
            var upVector    = arc.Normal.Cross(rightVector).Normalize();
            var pt          = transform.Transform(arc.Center + (rightVector * arc.Radius));
            var qt          = transform.Transform(arc.Center + (upVector * arc.Radius));
            var m           = transform.Transform(arc.Center);
            var circle      = ProjectedCircle.FromConjugateDiameters(null, layer, m, pt, qt);

            // find the new start and end angles
            var startPoint = transform.Transform(arc.EndPoint1);
            var endPoint   = transform.Transform(arc.EndPoint2);
            var startAngle = (startPoint - circle.Center).ToAngle();
            var endAngle   = (endPoint - circle.Center).ToAngle();

            return(new ProjectedArc(arc, layer, circle.Center, circle.RadiusX, circle.RadiusY, circle.Rotation, startAngle, endAngle, startPoint, endPoint));
        }