[英]Drawing line between intersection of two shapes
我在玩图形,特别是原始形状的交集和并集。
给定以下内容:
Elipse2D e1 = new Elipse2D.Double(120, 80, 80, 80);
Elipse2D e2 = new Elipse2D.Double(180, 80, 80, 80);
Area a1 = new Area(e1);
a1.add(new Area(e2));
gfx.draw(a1); // gfx is a Graphics2D object
这提供了非常好的形状,看起来像90年代动作电影中双筒望远镜的第一人称视角。
但是,我想知道是否有可能在两个相交点之间画一条线,这样看起来几乎就像两个单元正在忙于划分。 用两个圆圈完成此操作之后,也许可以使用多个圆圈吗?
我知道这可以通过找到两个圆之间的交点并手动绘制线来完成,但是,我不想重新发明轮子。
有什么建议么?
给定这些Ellipse2D
的参数后,这些等式可以写成:
x(r) = X + W (cos(r) + 1)/2
y(r) = Y + H (sin(r) + 1)/2
x(s) = X + W' (cos(s) + 1)/2
y(s) = Y + H (sin(s) + 1)/2
y
方程可以得出结论,角度r
和s
具有相同的正弦值,并且是互补的(相等的角度将不满足x
方程),因此cos(s)=-cos(r)
。
消除后,我们有(W'+W) cos(r) = W'-W
。 在给定的情况下, cos(r)=1/5
和r=78.463°
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.