I have a line from A to B and a circle positioned at C with the radius R. What is a good algorithm to use to check whether the line intersects the circle? And at what coordinate along the circles edge it occurred?

ここでは,ACM/ICPC頻出の平面幾何について,基本的なベクトル演算を解説します。 最後にライブラリとしてソースコードを載せているので本番では印刷して持っておくとよいでしょう。 ベクトルの基礎 デカルト座標系とユークリッド空間 スカラーとベクトル 点とベクトル ベクトルの和と差 ベクトルの利用 complex型の導入 絶対値,2点間の距離,単位ベクトル 法線ベクトル,単位法線ベクトル 内積と外積 内積・外積 2直線の直交判定・平行判定 点が線上にあるかないかの判定 直線と線分 直線と点の距離 線分と点の距離 線分の交差判定 線分の交点計算 直線の交点計算 ソースコード $Id: index.shtml 1825 2007-09-23 00:35:10Z SYSTEM $
事の始まりはWikipediaをウロウロしていたとき、 衝突判定 - Wikipedia ここの一番下の方に動く球の衝突判定について、媒介変数t(0 < t < 1)を使って云々と書かれているのを発見。 ここで、そうじゃん媒介変数じゃん!と思いついたわけです。 Wikipediaが言ってるのは、t(0 < t < 1)で1フレームを無限に分割して衝突の起こる時間範囲を見つけるということ。 そのフレームの何割の部分で衝突が始まり、そして終わるのかを媒介変数を使うと求めることができるよということです。 この考え方は球だけでなく円や矩形にも利用できるので、とりあえず手っ取り早い矩形に利用してみようと思いました。 やっていることは、通常の判定の座標の部分に、速度 * tを含めて計算するということです。 そして、tが0より大きくて1より小さいときに衝突すると判定された場合、そのフレーム内で衝突してい
自作ゲームに組み込んでいる衝突判定について、整理も兼ねてご紹介します。 説明を簡単にするために2D空間で説明します。 バウンディングボリューム バウンディングボリュームについては、容易に判定可能で実用的ということで 各軸に平行な四角形(以下の図のようなの)を採用します。 このような四角形のことをAABB(axis-aligned bounding box)と言います。 AABBのデータ構造 色々考えられますが、 最小座標とそれぞれの辺の長さ 中心座標とそれぞれの辺の半分の長さ 最小座標と最大座標 ここでは1.を採用します。 データ構造は以下のようになります。 struct AABB { POINT min_; SIZE size_; }; 図にすると以下のようになります。 静止しているAABB同士の衝突判定 上の図でobj1とobj2が衝突する条件を文章で書くと以下のようになります。 ob
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く