我正在玩图形,特别是原始形状的交集和结合。
鉴于以下内容:
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年代的动作片中,它给人一种非常漂亮的外形,看起来像双筒望远镜的第一人称视角。
然而,我想知道是否有可能在两个交叉点之间绘制一条线,这看起来几乎就像两个单元格忙于分割。用两个圆圈做完之后,这可能是多个圆圈,也许是吗?
我知道这可以通过找到两个圆圈之间的交点并手动绘制线来完成,但是,我不想重新发明轮子。
有什么建议吗?
答案 0 :(得分:1)
给定这些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°
。