タグ

ブックマーク / sampo.hatenadiary.jp (1)

  • 線分を扱うプログラムはベクトルで解く - またお前かよ!

    最近、別々の人から同じ質問をされたのでエントリーにまとめることにします。 その質問というのが「線分ABと点Pが与えられたとき、AB上でもっともPに近い点を求めるには?」というもの。 垂線をおろして交点を求めるだけの簡単なプログラムのように思えて、これはちょっと工夫が必要です。 誰にでも思いつく【ナイーブな】解法 垂線をおろして交点を求めればいいわけです。もし交点がなければ線分の端点AかBのどちらかが「最も近い点」になるはず。 実際に手順を書いてみましょう。 ABの傾きaを求める。 垂線の傾きは -1/a。ただしABが垂直なら垂線の傾きは0。垂線の傾きをbとする。 点Pを通り傾きがbとなる直線を求める。【一次方程式を解く】 ABを直線の式で表し、垂線との交点を求める。【連立一次方程式を解く】 交点の座標がAとBの間にあるなら、交点が求める点。 交点の座標がAの外側ならAが求める点、Bの外側な

    線分を扱うプログラムはベクトルで解く - またお前かよ!
    nilab
    nilab 2010/09/14
    線分を扱うプログラムはベクトルで解く - 生活が、一番面白い【Sampoのコラム】
  • 1