AOJ 1289 : Spherical Mirrors
問題↓
Spherical Mirrors | Aizu Online Judge
三次元の球体と直線の交点、反射のライブラリが出来たので乗っけます。
問題概要
- 三次元空間上にN個の球体があります。
- 原点(0,0,0)からレーザーが方向(u,v,w)に発射されます。
- 球体に当たるとレーザーが反射されるので
最後に反射する場所の座標を出力して下さい。
解法
- 球体とレーザーの反射を頑張って実装する。
- 反射後のベクトル
L3 refrectSL(Sphere s,const L3 &l); - 球体と直線の交点
vector<P3> getIntersectSL(Sphere s,const L3 &l); - 垂線
L3 Perpendicular(P3 a, L3 b); - を実装しました。
- 参考にしたサイト
ソースコード
感想
いままで三分探索で求めていた交点を安定して得られるようになった!
この問題誤差が緩めなので他も使えるか少し心配。