HDU4741

2014-11-23 22:37:24 · 作者: · 浏览: 4
#include 
#include 
#include 
#include 

#define eps 1e-8
#define zero(x) (((x)>0 (x):-(x))> T;
    while (T--)
    {
        point3 a, b, c, d;
        cin >> c.x >> c.y >> c.z >> d.x >> d.y >> d.z >> a.x >
> a.y >> a.z >> b.x >> b.y >> b.z; cout << fixed << setprecision(6) << linetoline(a, b, c, d) << endl; double H = b.x - a.x, I = b.y - a.y, J = b.z - a.z; double K = d.x - c.x, L = d.y - c.y, M = d.z - c.z; double N = H * I * L - I * I * K - J * J * K + H * J * M; double O = H * H * L - H * I * K - I * J * M + J * J * L; double P = H * J * K - H * H * M - I * I * M + I *J * L; double Q = -a.x * N + a.y * O - a.z * P; double k = (O * c.y - N * c.x - P * c.z - Q) / (N * K - O * L + P * M); cout << fixed << setprecision(6) << K * k + c.x << ' ' << L * k + c.y << ' ' << M * k + c.z << ' '; swap(a, c); swap(b, d); H = b.x - a.x, I = b.y - a.y, J = b.z - a.z; K = d.x - c.x, L = d.y - c.y, M = d.z - c.z; N = H * I * L - I * I * K - J * J * K + H * J * M; O = H * H * L - H * I * K - I * J * M + J * J * L; P = H * J * K - H * H * M - I * I * M + I *J * L; Q = -a.x * N + a.y * O - a.z * P; k = (O * c.y - N * c.x - P * c.z - Q) / (N * K - O * L + P * M); cout << fixed << setprecision(6) << K * k + c.x << ' ' << L * k + c.y << ' ' << M * k + c.z << endl; } }