繁体   English   中英

两种形状的交点之间的画线

[英]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方程可以得出结论,角度rs具有相同的正弦值,并且是互补的(相等的角度将不满足x方程),因此cos(s)=-cos(r)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM