在两个形状的交叉点之间绘制线条

时间:2014-04-07 06:50:38

标签: java graphics

我正在玩图形,特别是原始形状的交集和结合。

鉴于以下内容:

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年代的动作片中,它给人一种非常漂亮的外形,看起来像双筒望远镜的第一人称视角。

然而,我想知道是否有可能在两个交叉点之间绘制一条线,这看起来几乎就像两个单元格忙于分割。用两个圆圈做完之后,这可能是多个圆圈,也许是吗?

我知道这可以通过找到两个圆圈之间的交点并手动绘制线来完成,但是,我不想重新发明轮子。

有什么建议吗?

1 个答案:

答案 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方程允许得出结论rs具有相同的正弦并且是补充的(等角度不满足x方程式),所以cos(s)=-cos(r)

消除后,我们(W'+W) cos(r) = W'-W。在给定的情况下,cos(r)=1/5r=78.463°