スタックオーバーフロー コミュニティの皆様、こんにちは。
これは、動的に形成された長方形の面積と位置の計算に関して 6 か月間尋ねた質問の続きです。そのために提供されたソリューションはうまくいきましたが、今はこれをさらに一歩進めたいと思います.
いくつかの背景 - Cocos2D/Box2D を使用したパズル ゲームに取り組んでおり、プレイヤーは画面上に線を引きます。プレーヤーが描いたものに応じて、描画された線の結果として表示されるポリゴンの領域と位置を計算したいと思います。
次の画像では、黒い境界線がプレイエリアを表しており、これは常に同じ形になります。灰色の線はプレイヤーが描いたもので、常に直線です。緑の四角が障害物です。障害物オブジェクトは凸形状になります。形成されたポリゴン (この場合は 3 つ) は青い領域であり、座標と領域を取得しようとしている形状です。
行列式を使用してポリゴンの面積を計算することは問題ないと思いますが、その前に、青いポリゴンの座標を計算する必要があり、これを行う方法がわかりません。
両端の線 (x,y) 座標、障害物の座標、黒い境界線の角座標を取得しました。それらを使用して、青いポリゴンの座標を計算することは可能ですか、それとも間違った方法でアプローチしていますか?
更新 - ダッフィーモへの対応
ご回答有難うございます。さらに説明すると、前述の各オブジェクトはクラスで定義およびカプセル化されています。つまり、Line/Obstacle/PlayingArea オブジェクトを取得しています。ポリゴン オブジェクトが「Rectangle」オブジェクトにカプセル化されています。これらのオブジェクトのそれぞれには、座標/領域/ID/状態など、それに関連付けられた独自のプロパティがあります...
すべてのオブジェクトを追跡するために、すべての Line オブジェクト / Obstacle オブジェクトなどをそれぞれの配列に保持する監視シングルトン オブジェクトを用意しました。このようにして、すべての Line をループして、それぞれの Line がプレイヤーによって描かれたかどうかを知ることができます。
このゲームは古典的な JezzBallに少し似ているため、ユーザーが線を描画するときにこれらの多角形を作成できるようにする必要があります。これは、特定の領域にボールが含まれているかどうかを検出する方法として多角形が使用されるためです。そうでない場合は、領域を埋める必要があります。