题目链接

这道题会暴露很多孩纸的高数学的好不好。如何计算三维直线的最短距离和垂足的坐标,学习链接

之后的就是代入公式计算了。

 1 #include <stdio.h>
 2 #include <math.h>
 3 struct Point {
 4     double x, y, z;
 5     Point(double x = 0, double y = 0, double z = 0):x(x), y(y), z(z) {}
 6     void read() {
 7         scanf("%lf%lf%lf", &x, &y, &z);
 8     }
 9     void write() {
10         printf("%.6lf%.6lf%.6lf", x, y, z);
11     }
12     Point operator + (const Point &b) {
13         return Point(x + b.x, y + b.y, z + b.z);
14     }
15     Point operator - (const Point &b) {
16         return Point(x - b.x, y - b.y, z - b.z);
17     }
18     Point operator * (double k) {
19         return Point(x * k, y * k, z * k);
20     }
21     Point operator / (double k) {
22         return Point(x / k, y / k, z / k);
23     }
24     Point cross(const Point &b) {
25         return Point(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x);
26     }
27     double len() {
28         return sqrt(x * x + y * y + z * z);
29     }
30     double operator * (const Point &b) {
31         return x * b.x + y * b.y + z * b.z;
32     }
33 };
34 typedef Point Vector;
35 int main() {
36     int T;
37     scanf("%d", &T);
38     while (T--) {
39         Point A, B, C, D;
40         A.read();
41         B.read();
42         C.read();
43         D.read();
44         Vector AB= B - A, CD = D - C;
45         Vector n = AB.cross(CD), AC = C - A, CA = A - C;
46         double nlen = n.len(), dis = n * AC / nlen;
47         double t1 = AC.cross(CD) * AB.cross(CD) / nlen / nlen;
48         double t2 = CA.cross(AB) * CD.cross(AB) / nlen / nlen;
49         Point E = A + (AB * t1);
50         Point F = C + (CD * t2);
51         if (dis < 0)
52             dis = -dis;
53         printf("%.6lf\n", dis);
54         E.write();
55         putchar(' ');
56         F.write();
57         putchar('\n');
58     }
59     return 0;
60 }

View Code

转载于:https://www.cnblogs.com/Apiec/p/6063177.html

HDU 4741 Save Labman No.004 计算几何 数学相关推荐

  1. HDU 4741 Save Labman No.004(计算几何)

    题目链接 抄的模版...mark一下. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> ...

  2. [HDU 4741]Save Labman No.004[计算几何][精度]

    题意: 求两条空间直线的距离,以及对应那条距离线段的两端点坐标. 思路: 有一个参数方程算最短距离的公式, 代入求即可. 但是这题卡精度... 用另外的公式(先算出a直线上到b最近的点p的坐标, 再算 ...

  3. hdu 4741 Save Labman No.004

    题目大意:求空间两条直线的最短距离及最近的点坐标 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4741 拙计的代码,公垂线~~~~~~~~~ #inc ...

  4. POJ 4741 Save Labman No.004

    题目链接:Save Labman No.004 解题思路:给你两条直线,异面的空间直线,求直线间最短距离,并且求出最短距离的这两个点.下面是模板,先求出公垂线的法向量,在构造两个平面分别是两条直线各自 ...

  5. hdu 4793(嗷嗷水的计算几何)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793: 大意:在原点有一个平台,原点还有一个圆形木块,视为挡板,有一个圆形滑块在光滑坐标轴上摩擦,有初 ...

  6. HDU 3968 Angry Birds Again(计算几何)

    Description 给出小鸟的位置以及猪的位置,小鸟做斜抛运动经过ts后砸到猪,问小鸟经过的路程 Input 第一行为一整数T表示你用例组数,每组用例包括四个浮点数x0,y0,x1,y1,t分别表 ...

  7. hdu 4278 2012天津赛区网络赛 数学 *

    8进制转为10进制 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include ...

  8. HDU - 4635 Strongly connected(强连通缩点+数学+思维)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边构成的无向图,现在问最多能添加几条边,能使得原图仍然不是强连通图,若原图初始时就是强连通图,直接输出-1 题目分析:首先对于原图来说,肯定会有一些 ...

  9. HDU - 4082 Hou Yi‘s secret (计算几何)

    点击打开题目链接 Hou Yi's secret Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

最新文章

  1. TVM如何训练TinyML
  2. POJ 2190 模拟
  3. ElasticSearch2.2.0安装
  4. source insight 添加行号
  5. Greenplum【环境搭建 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
  6. sencha touch笔记(6)——路由控制(1)
  7. 汽车上的一些名词缩写解释
  8. nginx ---- 目录结构
  9. sprintboot入门
  10. 最简单的基于FFmpeg的视频编码器-更新版(YUV编码为MP4)
  11. mysql 主从复制原理【转】
  12. 如何解决xp进系统的时候需要按enter键
  13. labview 上位机报警提示,报警记录,txt文档存储
  14. Ubuntu16.04下用umake安装vscode
  15. 大型传统企业要不要提升自身的IT研发能力
  16. 程序员因违反竟业协议,赔腾讯97.6万...
  17. 快速打造微信小程序(超详细)
  18. 备忘_命令行查看电池损耗
  19. 鸿蒙javascript项目开发----呼吸计时训练(基于华为轻量级运动手表)
  20. 电子变压器的设计工艺重不重要?

热门文章

  1. 从SOURCE_BUFFER单元开始存放了20个字母A, 编程将这20个字母A的字符 串向下移10个单元.
  2. Jackson 读写 JSON
  3. PyTorch基础(15)-- torch.flatten()方法
  4. UNIX再学习 -- 再识
  5. c语言怎么在编码时改变颜色,怎么给贪吃蛇换一个颜色 怎么改 代码如下
  6. 知识图谱学习小组学习大纲
  7. Activity到底是什么时候显示到屏幕上的呢
  8. Alibaba-AndFix Bug热修复框架原理及源码解析
  9. protobuf java_ProtoBuf for java使用笔记 | 学步园
  10. nx600打印机打印设置_win7打印机共享怎么设置