3

我有一个 raphael.js 形状,我在上面绘制圆圈。如果圆圈没有超出它被绘制到的形状的边界,我只希望出现一个圆圈。

为了更清楚地说明这一点,这是我不希望发生的示例:

示例 http://img682.imageshack.us/img682/4168/shapeh.png

我希望灰色区域之外的圆圈不出现。我如何检测一个圆圈是在灰色形状的内部还是外部?

4

3 回答 3

5

确定一个点是否在封闭路径内的一种可能方法是:

  1. 选择绝对在形状之外的坐标。
  2. 从该点到您的实际问题点划一条线。
  3. 数一下,这条线与路径相交的频率。
  4. 如果交叉点的数量是奇数,那么你的点就在里面。如果是偶数,那么重点就在外面。

我不知道这是否对您有很大帮助,因为我根本不了解 raphael.js。但这是解决问题的有效几何方法。

于 2010-04-17T17:16:37.933 回答
3

<g>您可以在包含圆圈的组(元素)上应用剪辑路径(应定义为示例中的灰色形状)。

请参阅w3c SVG 测试套件中的这个示例,了解如何使用剪辑路径。

于 2010-04-18T10:12:54.687 回答
1

这看起来非常类似于“命中测试 SVG 形状? ”。

您只需要在圆的位置上调用 getIntersectionList() ,看看它是否返回大的灰色形状。

于 2010-04-18T14:40:23.903 回答