0

質問: 既知の頂点の 1 つを基準にしてポリゴンを配置するにはどうすればよいですか?

つまり、ポリゴンの自動生成された中心が既知の頂点の 1 つ (つまり、パスで使用される) に対して相対的な位置を計算するにはどうすればよいでしょうか?

たとえば、ポリゴンを作成したマップ上に特定の形状を配置する画像をマップ上に配置する必要がありますが、コロナ エンジンが作成した中心がどこにあるかを知らずにこれを正確に行うことはできません。API からの抜粋: 「ローカル原点はポリゴンの中心にあり、アンカー ポイントはこのローカル原点に初期化されます。」

PS実際には、線を使用してポイントを追加してポリゴンを効果的に作成する必要があるかどうか疑問に思っていますが、この場合は背景色を追加できない可能性があります(?)

4

2 に答える 2

4

コロナによって計算された中心は、ポリゴンのバウンディング ボックスの中心です。

ポリゴンのすべてのポイントが次のように保存されたテーブルがあるとします。

local polygon = {x1,y1,x2,y2,...,xn,yn}

1)元のポイントの境界ボックスを見つけるには、すべてのポイントをループします。最小の x 値と最小の y 値は、左上の点の座標を示します。最大の x と y の値は右下のポイントです。

local minX = -math.huge
local minY = -math.huge
local maxX = math.huge
local maxY = math.huge

for i=1, #polygon, 2 do
    local px = polygon[i]
    local py = polygon[i+1]
    if px > maxX then maxX = px end
    if py > maxY then maxY = py end
    if px < minX then minX = py end
    if py < minY then minY = py end
end

2) このバウンディング ボックスの中心を見つけます。

local centerX = (maxX - minX)/2
local centerY = (maxY - minY)/2

3) 中心点を左上の点に追加します

local offsetX = centerX + minX
local offsetY = centerY + minY    

4) このオフセットをコロナ ポリゴンに追加して、元のポリゴンと同じ位置に配置します。

テストしていないボットが動作するはずです。お知らせ下さい。

于 2015-06-16T17:13:31.833 に答える