読者です 読者をやめる 読者になる 読者になる

kanetaiの二次記憶装置

プログラミングに関するやってみた、調べた系のものをQitaに移して、それ以外をはてブでやる運用にしようと思います。http://qiita.com/kanetai

平面幾何(射影、鏡映)

Algorithm

正射影(orthograph, orthogonal projection) 射影(projection)、鏡映(reflection)

一点からある直線または平面上に下ろした垂線の交点(垂線の足:foot of a perpendicular)。図形(点の集合)についても、図形上のすべての点の垂線の足の集合を正射影と呼ぶ。
 \vec{a}=\vec{l_e}-\vec{l_s} \vec{b}=\vec{p}-\vec{l_s}と置くと点 \vec{p}の直線 \bar{l_s l_e}への正射影 \vec{p'}は、
 \vec{p'}=\vec{l_s} + \frac{\vec{a}\bullet \vec{b}}{\vec{a}\bullet \vec{a}}\vec{a}
また、点 \vec{p}の直線 \bar{l_s l_e}に対する鏡映 \vec{p''}は、
 \vec{p''}=2\vec{p'}-\vec{p}
proj_reflec

//instance method of Point class
public final Point projection(Line l){
	Point a = l.end.sub(l.start);
	Point b = this.sub(l.start);
	return l.start.add(a.mul(a.dot(b)/a.normsq()));
}
public final Point reflection(Line l){ return projection(l).mul(2).sub(this); }
//instance method of Line class
public final Point projection(Point p){ return p.projection(this); }
public final Point reflection(Point p){ return p.reflection(this); }