Difference between revisions of "DistanceBasedCollision (日本語)"

m
m
 
Line 2: Line 2:
 
別方向にある単体オブジェクトの距離がそれらの合計未満かどうかを確認します (複数の半径)。
 
別方向にある単体オブジェクトの距離がそれらの合計未満かどうかを確認します (複数の半径)。
  
変数定義 : ax, ay = circleA の座標。 bx, by = circleB の座標。 ar, br = それぞれ CircleA および circleB の円弧
+
変数定義 : ax, ay = circleA の中心座標。 bx, by = circleB の中心座標。 ar, br = それぞれ CircleA および circleB の円弧
  
 
<source lang="lua">
 
<source lang="lua">
Line 24: Line 24:
 
距離にて処理を行われることがわかっている sqrt 関数を保持します。
 
距離にて処理を行われることがわかっている sqrt 関数を保持します。
  
== 寄贈者 ==
+
高負荷の平方根を回避するため、第二番目が高速であると思われるのに対して、第二番目のバージョンにある 3 つの二条ではなく、一つはまだ関数であることに注意してください。それはそうとして、 Löve は LuaJIT を使用しており、本当に最適化を行う必要がある場合は、どちらが高速であるか調査を行ってください。
* [[(User):Substitute541 (日本語)|Substitute541]]
 
  
 
[[Category:Snippets (日本語)]]
 
[[Category:Snippets (日本語)]]
 
{{#set:Author=User:Substitute541}}
 
{{#set:Author=User:Substitute541}}
 +
{{#set:LOVE Version=any}}
 
{{#set:Description=衝突検出を行うための別の方法です。この種類は完全に円弧にて動作します。}}
 
{{#set:Description=衝突検出を行うための別の方法です。この種類は完全に円弧にて動作します。}}
 
== そのほかの言語 ==
 
== そのほかの言語 ==
 
{{i18n|DistanceBasedCollision}}
 
{{i18n|DistanceBasedCollision}}

Latest revision as of 23:24, 14 November 2016

衝突検出を行うための別の方法です。この種類は完全に円弧にて動作します。 別方向にある単体オブジェクトの距離がそれらの合計未満かどうかを確認します (複数の半径)。

変数定義 : ax, ay = circleA の中心座標。 bx, by = circleB の中心座標。 ar, br = それぞれ CircleA および circleB の円弧

function checkCircularCollision(ax, ay, bx, by, ar, br)
	local dx = bx - ax
	local dy = by - ay
	local dist = math.sqrt(dx * dx + dy * dy)
	return dist < ar + br
end

余計な平方根関数は不要ですか? この他の関数を試してみてください

function checkCircularCollision(ax, ay, bx, by, ar, br)
	local dx = bx - ax
	local dy = by - ay
	return dx^2 + dy^2 < (ar + br)^2
end

距離にて処理を行われることがわかっている sqrt 関数を保持します。

高負荷の平方根を回避するため、第二番目が高速であると思われるのに対して、第二番目のバージョンにある 3 つの二条ではなく、一つはまだ関数であることに注意してください。それはそうとして、 Löve は LuaJIT を使用しており、本当に最適化を行う必要がある場合は、どちらが高速であるか調査を行ってください。


そのほかの言語