タグ付けされた質問 「computational-geometry」

23
ポリゴンポイントのリストが時計回りであるかどうかを確認する方法は?
ポイントのリストがある場合、それらが時計回りの順序であるかどうかをどのようにして見つけますか? 例えば: point[0] = (5,0) point[1] = (6,4) point[2] = (4,5) point[3] = (1,5) point[4] = (1,0) それは反時計回り(または一部の人にとっては反時計回り)であると言うでしょう。

12
ポリゴンの膨張/収縮(オフセット、バッファリング)のアルゴリズム
ポリゴンを「膨らませる」にはどうすればよいですか?つまり、私はこれに似た何かをしたいです: 要件は、新しい(インフレートされた)ポリゴンのエッジ/ポイントが古い(元の)ポリゴンからすべて同じ一定の距離にあることです(例の画像ではそうではありません。それから、膨らんだ頂点にアークを使用する必要があるためですが、今はそのことを忘れてください;))。 私が探している数学的用語は、実際には内側/外側のポリゴンオフセットです。これを指摘するためのbalintへの+1。別の名前は、ポリゴンバッファリングです。 私の検索の結果: ここにいくつかのリンクがあります: ポリゴンオフセット戦略の調査 ポリゴンオフセット、問題 ポリゴンデータのバッファリング

5
ポイントを時計回りにソートしますか?
x、yポイントの配列が与えられた場合、この配列のポイントを(全体的な平均中心点の周りで)時計回りにソートするにはどうすればよいですか?私の目標は、ポイントをライン作成関数に渡し、ラインが交差することなくできるだけ凸状に見える、凸状になるようにすることです。 それだけの価値があるので、私はLuaを使用していますが、どのような疑似コードもいただければ幸いです。 更新:参考までに、これはCiamejの優れた回答に基づくLuaコードです(「app」接頭辞は無視してください)。 function appSortPointsClockwise(points) local centerPoint = appGetCenterPointOfPoints(points) app.pointsCenterPoint = centerPoint table.sort(points, appGetIsLess) return points end function appGetIsLess(a, b) local center = app.pointsCenterPoint if a.x >= 0 and b.x < 0 then return true elseif a.x == 0 and b.x == 0 then return a.y > b.y end local …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.