ユーザーがまだタッチするのに十分であることを確認するために、画面の境界内にあるCGPathの量を確認できるようにする必要があるiOSアプリに取り組んでいます。問題は、形状が角にある場合、パスが角にある場合、通常使用するすべての方法 (および試してみようと思うすべての方法) が失敗することです。
ここに写真があります:
その形状が画面上にどのくらいあるかを計算するにはどうすればよいですか?
ユーザーがまだタッチするのに十分であることを確認するために、画面の境界内にあるCGPathの量を確認できるようにする必要があるiOSアプリに取り組んでいます。問題は、形状が角にある場合、パスが角にある場合、通常使用するすべての方法 (および試してみようと思うすべての方法) が失敗することです。
ここに写真があります:
その形状が画面上にどのくらいあるかを計算するにはどうすればよいですか?
明白な答えは、ピクセル ペインティングによって経験的に行うか、ポリゴン クリッピングによって分析的に行うことです。
したがって、経験的に進めるCGBitmapContext
には、ビューポートのサイズを作成し、(0, 0, 0) などの既知の色にクリアし、(1, 1, 1) などの別の既知の色でポリゴンをペイントします。ビットマップ コンテキスト内のすべてのピクセルを実行し、見つけた合計数を合計します。それはおそらく非常に高価ですが、それが役立つ場合は、より低い解像度のコンテキストを使用して、より近似した結果を得ることができます。
分析的に進めるには、ここで説明するようなポリゴン クリッピング アルゴリズムを実行して、元のポリゴンから新しいポリゴンを派生させます。これは、実際に画面上にあるポリゴンの一部です。次に、通常の公式を使用してその面積を取得します。
実際には、凹面ポリゴンよりも凸面ポリゴンをクリッピングする方がはるかに簡単です。そのため、ポリゴンの形状が固定されている場合は、耳のクリッピングや単調なエッジへの分解などの三角形分割アルゴリズムの使用を検討してから、クリッピングと面積の計算を実行することを検討してください。オリジナルではなくそれらについて。
このアプローチを使用して近似値を取得できます。
reg のサイズに基づいてパラメーター N を選択して、適切で高速な近似を得ることができます。