コード例 #1
0
        public 两圆轨迹(圆 圆1, 圆 圆2, 线段 线段1, 线段 线段2, Point[] 四边形的点集)
        {
            this.圆1  = 圆1;
            this.圆2  = 圆2;
            this.线段1 = 线段1;
            this.线段2 = 线段2;

            if (四边形的点集.Length != 4)
            {
                throw new ArgumentException("此点集不能表示四边形");
            }

            this.四边形的点集 = 四边形的点集;
        }
コード例 #2
0
        public 两圆轨迹 求两圆轨迹线(圆 另一个圆)
        {
            var p1 = this.圆心;
            var p2 = 另一个圆.圆心;
            var r1 = this.半径;
            var r2 = 另一个圆.半径;

            var vector = p1 - p2;
            var cosθ   = vector.GetCos();
            var sinθ   = vector.GetSin();

            var ax = p1.X + r1 * cosθ;
            var ay = p1.Y - r1 * sinθ;

            var bx = p1.X - r1 * cosθ;
            var by = p1.Y + r1 * sinθ;

            var cx = p2.X - r2 * cosθ;
            var cy = p2.Y + r2 * sinθ;

            var dx = p2.X + r2 * cosθ;
            var dy = p2.Y - r2 * sinθ;

            var aPoint = new Point(ax, ay);
            var bPoint = new Point(bx, by);
            var cPoint = new Point(cx, cy);
            var dPoint = new Point(dx, dy);

            线段 线段1 = new 线段(aPoint, dPoint);
            线段 线段2 = new 线段(bPoint, cPoint);

            return(new 两圆轨迹(this, 另一个圆, 线段1, 线段2, 四边形的点集: new[]
            {
                aPoint, bPoint, cPoint, dPoint
            }));
        }