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.四边形的点集 = 四边形的点集; }
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 })); }