检测点是否在raphael.js形状的内部或外部

时间:2010-04-17 16:55:31

标签: javascript svg collision-detection raphael

我有一个raphael.js形状,我正在绘制圆圈的顶部。如果圆圈没有偏离其绘制形状的边界,我只想要一个圆圈出现。

为了使这一点更清楚,这里有一个我不想发生的例子:

Example http://img682.imageshack.us/img682/4168/shapeh.png

我希望灰色区域外的圆圈不会出现。如何检测到灰色形状内外的圆圈?

3 个答案:

答案 0 :(得分:4)

如果一个点位于封闭路径内,一种可能的方法是:

  1. 选择绝对超出形状的坐标。
  2. 从该点到您实际有问题的地方划一条线。
  3. 计算线条与路径相交的频率。
  4. 如果交叉点的数量是奇数,那么你的点在里面。如果它是偶数,则重点在于。
  5. 我不知道这对你有多大帮助,因为我根本不懂raphael.js。但这是解决这个问题的几何方法。

答案 1 :(得分:3)

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

请参阅this example中的w3c SVG testsuite了解如何使用剪辑路径。

答案 2 :(得分:1)

这与“Hit-testing SVG shapes?”非常相似。

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