3

私はその上に円をプロットしている raphael.js 形状を持っています。円がプロットされている形状の境界から外れていない場合にのみ、円を表示したいです。

これをより明確にするために、私が起こりたくないことの例を次に示します。

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

灰色の領域の外側の円が表示されないようにしたい。円が灰色の形状の内側にあるか外側にあるかをどのように検出しますか?

4

3 に答える 3

5

ポイントが閉じたパス内にあるかどうかを判断する方法の 1 つは、次のとおりです。

  1. 確実に形状の外側にある座標を選択してください。
  2. その点から問題の実際の点まで線を引きます。
  3. カウント、線がパスと交差する頻度。
  4. 交差点の数が奇数の場合、ポイントは内側にあります。偶数の場合、ポイントは外側です。

私は raphael.js をまったく知らないので、それがあなたに役立つかどうかはわかりません。しかし、それは問題に対する有効な幾何学的アプローチです。

于 2010-04-17T17:16:37.933 に答える
3

<g>円を含むグループ(要素)にクリップパス(例では灰色の形状になるように定義する必要があります)を適用するだけです。

クリップパスの使用方法については、w3c SVG テストスイートのこの例を参照してください。

于 2010-04-18T10:12:54.687 に答える
1

これは、「 Hit-testing SVG shape? 」と非常によく似ています。

円の位置で getIntersectionList() を呼び出すだけで、大きな灰色の形状が返されるかどうかを確認できます。

于 2010-04-18T14:40:23.903 に答える