拯救助手!
题意:建立时空隧道,连接Alpha与Beta世界线,求两世界线的最短距离和最近点位置。
思路:三维向量A、B叉乘结果是叉乘向量的垂直向量C,在原直线A上任选一点V向C移动,移动的这段向量也是和B垂直的,这时候用V和直线A做平面Alpha,Alpha就是B的垂直平面,同理可以得到A的垂直平面Beta,而Alpha与B的交点和Beta和A的交点就是两直线最近点,至于最近距离,可以用两点距离求,也可以直接套公式。
上交大的模板~
El Psy Congroo!
我是桶子。
#include <cstdio>
#include <cmath>
const double eps = 1e-8;
const double PI = acos(-1.0);
inline double Sqrt(double a){
return a <= 0 ? 0 : sqrt(a);
}
inline double Sqr(double a){
return a * a;
}
class Point_3{
public:
double x, y, z;
Point_3(){}
Point_3(double x, double y, double z):x(x), y(y), z(z){}
void input(){
scanf("%lf %lf %lf", &x, &y, &z);
}
double Length() const{
return Sqrt(Sqr(x) + Sqr(y) + Sqr(z));
}
};
Point_3 operator + (const Po