hdu 4741 Save Labman No.004

来源:互联网 发布:深圳市房地产交易数据 编辑:程序博客网 时间:2024/06/05 12:50

题目大意:求空间两条直线的最短距离及最近的点坐标

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4741


拙计的代码,公垂线~~~~~~~~~


#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;struct node{    double x,y,z;}p[20],dir1,dir2,dir3,dir,ans,res;struct line{    node a,b;}l1,l2;int main(){    int T;    scanf("%d",&T);    while(T--){        for(int i = 0; i < 4; i ++)        scanf("%lf %lf %lf",&p[i].x,&p[i].y,&p[i].z);        l1.a = p[0],l1.b = p[1];        dir1.x = p[0].x - p[1].x, dir1.y = p[0].y - p[1].y, dir1.z = p[0].z - p[1].z;        l2.a = p[2],l2.b = p[3];        dir2.x = p[2].x - p[3].x, dir2.y = p[2].y - p[3].y, dir2.z = p[2].z - p[3].z;        double e,f,g;        e = dir1.y*dir2.z - dir2.y*dir1.z;        f = dir1.z*dir2.x - dir2.z*dir1.x;        g = dir1.x*dir2.y - dir2.x*dir1.y;        dir3.x = p[2].x - p[0].x, dir3.y = p[2].y - p[0].y, dir3.z = p[2].z - p[0].z;        double an = (e*dir3.x + f*dir3.y + g*dir3.z)/(sqrt(e*e + f*f + g*g));        printf("%.6lf\n",fabs(an));        dir.x = e, dir.y = f , dir.z = g;        res.x = dir3.y*dir2.z - dir3.z *dir2.y;        res.y = dir3.z*dir2.x - dir3.x *dir2.z;        res.z = dir3.x*dir2.y - dir3.y *dir2.x;        double t1 = res.x * dir.x + res.y * dir.y + res.z * dir.z;        t1 /= dir.x * dir.x + dir.y *dir.y + dir.z *dir.z;        ans.x = p[0].x + dir1.x * t1;        ans.y = p[0].y + dir1.y * t1;        ans.z = p[0].z + dir1.z * t1;        printf("%.6lf %.6lf %.6lf ",ans.x,ans.y,ans.z);        res.x = dir3.y*dir1.z - dir3.z *dir1.y;        res.y = dir3.z*dir1.x - dir3.x *dir1.z;        res.z = dir3.x*dir1.y - dir3.y *dir1.x;        t1 = res.x * dir.x + res.y * dir.y + res.z * dir.z;        t1 /= dir.x * dir.x + dir.y *dir.y + dir.z *dir.z;        ans.x = p[2].x + dir2.x * t1;        ans.y = p[2].y + dir2.y * t1;        ans.z = p[2].z + dir2.z * t1;        printf("%.6lf %.6lf %.6lf\n",ans.x,ans.y,ans.z);    }    return 0;}


原创粉丝点击