【问题标题】:Drawing line between intersection of two shapes在两个形状的交点之间画线
【发布时间】:2014-04-07 21:50:14
【问题描述】:

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

鉴于以下情况:

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 年代动作电影中的双筒望远镜的第一人称视角。

但是,我想知道是否可以在两个交点之间画一条线,这样看起来就像两个细胞在忙着分裂。用两个圈子做完之后,这可能用多个圈子吗?

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

有什么建议吗?

【问题讨论】:

    标签: java graphics


    【解决方案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°

    【讨论】:

    • Yip... 在发现我正在寻找的轮子不是核心库的一部分后,我选择了这个。
    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多