Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲーム制作に活かす座標系の話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Ark Ark
January 17, 2018

 ゲーム制作に活かす座標系の話

Tokyotech traP LT#3 でのスライドです
http://ark4rk.hatenablog.com/entry/2018/01/18/040938

Avatar for Ark

Ark

January 17, 2018
Tweet

Other Decks in Programming

Transcript

  1. どう実装しますか? 二次元平面上で次の2つの図形がある。 図形A: 点(x , y )とのマンハッタン距離がr 以下の領域 図形B: 点(x

    , y )とのマンハッタン距離がr 以下の領域 AとBが衝突しているかを判定するには? A A A B B B
  2. マンハッタン距離: d((x , y ), (x , y )) :=

    ∣x − x ∣ + ∣y − y ∣ (1, 1)と(4, 3)のマンハッタン距離は ∣1 − 4∣ + ∣1 − 3∣ = 3 + 2 = 5 1 1 2 2 1 2 1 2
  3. 赤: (x , y ) = (0, 1)、r = 3

    緑: (x , y ) = (3, 2)、r = 2 A A A B B B
  4. 45度回転の仕方 回転の回転行列で座標を変換する 4 π ( X Y ) = ⎝

    ⎛cos 4 π sin 4 π − sin 4 π cos 4 π ⎠ ⎞ ( x y ) = √2 1 ( x − y x + y )
  5. 余談 実は回転後の図形は (x, y)からのチェビシェフ距離がr以下であるよ うな点の集合からなる図形 チェビシェフ距離: max{∣x − x ∣

    + ∣y − y ∣} これは競プロでたまに出るテク 「マンハッタン距離が出たら45度回転させてチ ェビシェフ距離で考える」 1 2 1 2
  6. いい感じに線形変換をす るとできる ⎩ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪

    ⎧ ( q r ) s = size 1 ⎝ ⎜ ⎛ 3 2 − 3 1 0 3 √3 ⎠ ⎟ ⎞ ( x y ) = −q − r
  7. 逆変換: = size 距離関数: ( x y ) ⎝ ⎜

    ⎛ 2 3 2 √3 0 √3⎠ ⎟ ⎞ ( q r ) d , = ⎝ ⎛ ⎝ ⎛q1 r1 s1 ⎠ ⎞ ⎝ ⎛q2 r2 s2 ⎠ ⎞ ⎠ ⎞ ∣q − q ∣ + ∣r − r ∣ + ∣s − s ∣ 1 2 1 2 1 2