1

ユーザーがまだタッチするのに十分であることを確認するために、画面の境界内にあるCGPathの量を確認できるようにする必要があるiOSアプリに取り組んでいます。問題は、形状が角にある場合、パスが角にある場合、通常使用するすべての方法 (および試してみようと思うすべての方法) が失敗することです。

ここに写真があります:ここに画像の説明を入力

その形状が画面上にどのくらいあるかを計算するにはどうすればよいですか?

4

2 に答える 2

3

明白な答えは、ピクセル ペインティングによって経験的に行うか、ポリゴン クリッピングによって分析的に行うことです。

したがって、経験的に進めるCGBitmapContextには、ビューポートのサイズを作成し、(0, 0, 0) などの既知の色にクリアし、(1, 1, 1) などの別の既知の色でポリゴンをペイントします。ビットマップ コンテキスト内のすべてのピクセルを実行し、見つけた合計数を合計します。それはおそらく非常に高価ですが、それが役立つ場合は、より低い解像度のコンテキストを使用して、より近似した結果を得ることができます。

分析的に進めるには、ここで説明するようなポリゴン クリッピング アルゴリズムを実行して、元のポリゴンから新しいポリゴンを派生させます。これは、実際に画面上にあるポリゴンの一部です。次に、通常の公式を使用してその面積を取得します。

実際には、凹面ポリゴンよりも凸面ポリゴンをクリッピングする方がはるかに簡単です。そのため、ポリゴンの形状が固定されている場合は、耳のクリッピング単調なエッジへの分解などの三角形分割アルゴリズムの使用を検討してから、クリッピングと面積の計算を実行することを検討してください。オリジナルではなくそれらについて。

于 2012-06-01T00:02:27.330 に答える
0

このアプローチを使用して近似値を取得できます。

  • 形状のバウンディングボックスとスクリーンの交点を reg とする
  • reg で N 個のランダムな点を選択し、それらが形状に含まれているかどうかを確認します
  • 形状の面積は、(reg の面積)*(形状に含まれる点の数)/N で見積もることができます。

reg のサイズに基づいてパラメーター N を選択して、適切で高速な近似を得ることができます。

于 2012-06-07T13:28:11.250 に答える