Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゲーム制作に活かす座標系の話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ark
January 17, 2018
Programming
0
470
ゲーム制作に活かす座標系の話
Tokyotech traP LT#3 でのスライドです
http://ark4rk.hatenablog.com/entry/2018/01/18/040938
Ark
January 17, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
CSC307 Lecture 08
javiergs
PRO
0
670
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
180
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
660
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
CSC307 Lecture 02
javiergs
PRO
1
780
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
140
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
150
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
Technical Leadership for Architectural Decision Making
baasie
2
250
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
Transcript
ゲーム制作に活かす 座標系の話 注) 3Dの話はしません Tokyotech traP LT#3 2018 1/17(Wed)
自己紹介 発表者: Ark Twitter: @arkark_ ゲーム作ったりしてます 競プロとか
突然ですが
どう実装しますか? 二次元平面上で次の2つの図形がある。 図形A: 点(x , y )とのマンハッタン距離がr 以下の領域 図形B: 点(x
, y )とのマンハッタン距離がr 以下の領域 AとBが衝突しているかを判定するには? A A A B B B
マンハッタン距離: 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
赤: (x , y ) = (0, 1)、r = 3
緑: (x , y ) = (3, 2)、r = 2 A A A B B B
斜めに傾いた正方形同士の判定 斜めのまま処理するのは大変そう
45度回転してみる
これなら簡単に判定できそう
45度回転の仕方 回転の回転行列で座標を変換する 4 π ( X Y ) = ⎝
⎛cos 4 π sin 4 π − sin 4 π cos 4 π ⎠ ⎞ ( x y ) = √2 1 ( x − y x + y )
45度回転の仕方 判定にはスケーリングは関係しない は無視して良い √2 1 ( X Y ) =
( x − y x + y )
この方法で回転するとこうなる あとは、x軸、y軸それぞれに関して判定すれば良い
つまり 座標系を変える ⇒ 見える世界が変わる ⇒ 実装しやすくなる(かも) ⇒ コードが単純になる(かも)
余談 実は回転後の図形は (x, y)からのチェビシェフ距離がr以下であるよ うな点の集合からなる図形 チェビシェフ距離: max{∣x − x ∣
+ ∣y − y ∣} これは競プロでたまに出るテク 「マンハッタン距離が出たら45度回転させてチ ェビシェフ距離で考える」 1 2 1 2
その他の例 平行移動で原点を画面の中心にする ⇒ 極座標に変換する { r θ = √x +
y 2 2 = atan2(y, x)
ところで
Hexcellsというゲームを知っ ていますか
Hexcells
正六角形のセルが 規則正しく並んでいる
どうやって実装しよう?
座標変換すると楽できる?
Hexagonal Coordinates
いい感じに線形変換をす るとできる ⎩ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪
⎧ ( q r ) s = size 1 ⎝ ⎜ ⎛ 3 2 − 3 1 0 3 √3 ⎠ ⎟ ⎞ ( x y ) = −q − r
逆変換: = 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
デモ
まとめ 実装が難しそうなら 座標系を変えてみると有効な場合がある 例: 回転 (E.g. マンハッタン → チェビシェフ) 平行移動
極座標 Hexagonal Coordinates 詳しく知りたい人向け→ Hexagonal Grids