代码之家  ›  专栏  ›  技术社区  ›  betamax

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

  •  3
  • betamax  · 技术社区  · 16 年前

    我有一个拉斐尔JS形状,我在上面画圆。我只希望一个圆不超出它被绘制到的形状的边界时出现。

    为了更清楚地说明这一点,下面是我不希望发生的事情的一个例子:

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

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

    3 回复  |  直到 16 年前
        1
  •  3
  •   Erik Dahlström    16 年前

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

    this example w3c SVG testsuite 如何使用剪辑路径。

        2
  •  4
  •   selfawaresoup    16 年前

    如果一个点位于闭合路径内,则有一种可能的脱轨方法是:

    1. 选择绝对在形状外部的坐标。
    2. 从那个点到你的实际问题点画一条线。
    3. 计数,线与路径相交的频率。
    4. 如果交叉点的数目是奇数,那么您的点就在里面。如果它是平的,那么问题就在外面。

    我不知道这对你有什么帮助,因为我根本不认识拉斐尔。但这是一个有效的几何方法来解决这个问题。

        3
  •  1
  •   Community Mohan Dere    9 年前

    这看起来很像“ Hit-testing SVG shapes? “。

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