射影・反射
射影
$\mathrm{Projection}(l, p):=$ 点 $p$ の直線 $l$ に対する射影を求める
点 $p$ から直線 $l = \vec {ab}$ に垂線をおろしたときの交点 $x$ を点 $p$ の射影と呼ぶ。
反射
$\mathrm{Reflection}(l, p):=$ 点 $p$ の直線 $l$ に対する反射を求める
直線 $l = \vec {ab}$ を対称軸として点 $p$ と線対称の位置にある点 $x$ を $p$ の反射と呼ぶ。
実装例
Point Projection(const Line& l, const Point& p){
double t = dot(p - l.a, l.a - l.b) / (l.a - l.b).norm();
return l.a + (l.a - l.b) * t;
}
Point Projection(const Segment& l, const Point& p){
double t = dot(p - l.a, l.a - l.b) / (l.a - l.b).norm();
return l.a + (l.a - l.b) * t;
}
Point Reflection(const Line& l, const Point& p){
return p + (Projection(l, p) - p) * 2.0;
}