AutoCAD.NET创建对象之绘制圆

        ///<summary>
        ///由圆心和半径创建圆
        ///</summary>
        ///<param name="cenPt">圆心</param>
        ///<param name="radius">半径</param>
        ///<returns>圆</returns>
        public static Circle Circle(Point3d cenPt, double radius)
        {
            return new Circle(cenPt, Vector3d.ZAxis, radius);
        }
        ///<summary>
        ///由两点(Point3d)创建圆
        ///</summary>
        ///<param name="pt1">第一点</param>
        ///<param name="pt2">第二点</param>
        ///<returns>圆</returns>
        public static Circle Circle(Point3d pt1, Point3d pt2)
        {
            Point3d cenPt = new Point3d((pt1.X + pt2.X) / 2.0, (pt1.Y + pt2.Y) / 2.0,(pt1.Z + pt2.Z) / 2.0);
            double radius = pt1.DistanceTo(pt2) / 2.0;
            return new Circle(cenPt, Vector3d.ZAxis, radius);
        }
        ///<summary>
        ///由三点(Point3d)创建圆
        ///</summary>
        ///<param name="pt1">点1</param>
        ///<param name="pt2">点2</param>
        ///<param name="pt3">点3</param>
        ///<returns>过三点的圆</returns>
        public static Circle Circle(Point3d pt1, Point3d pt2, Point3d pt3)
        {
            Vector3d va = pt1.GetVectorTo(pt2);
            Vector3d vb = pt1.GetVectorTo(pt3);
            if (va.GetAngleTo(vb) == 0 | va.GetAngleTo(vb) == Math.PI)
            {
                return new Circle();
            }
            else
            {
                CircularArc3d geoArc = new CircularArc3d(pt1, pt2, pt3);
                Point3d cenPt = new Point3d(geoArc.Center.X, geoArc.Center.Y, 0);
                double radius = geoArc.Radius;
                return new Circle(cenPt, Vector3d.ZAxis, radius);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值