HDU 4741 Save Labman No.004
来源:互联网 发布:linux的uniq 编辑:程序博客网 时间:2024/06/05 12:02
题意:有两条异面直线,在这两条直线上分别各找一点,使得这两点间的距离最短
这样
不妨设
移项得
为消
为了把t1的系数变成数左右都点乘S1×S2得
化简得
同理
这样点就求出来了
#include <cstdio>#include <math.h>struct P{ double x, y, z; P(){} P(double _x, double _y, double _z){x = _x; y = _y; z = _z;}}p1, p3, p2, p4, s1, s2;P operator + (P a, P b) {return P(a.x + b.x, a.y + b.y, a.z + b.z);}P operator - (P a, P b) {return P(a.x - b.x, a.y - b.y, a.z - b.z);}P operator * (double t, P a) {return P(t * a.x, t * a.y, t * a.z);}double dot(P a, P b) {return a.x * b.x + a.y * b.y + a.z * b.z;}P cross(P a, P b) {return P(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);}int main(){ int T; scanf("%d", &T); while(T--) { scanf("%lf%lf%lf", &p1.x, &p1.y, &p1.z); scanf("%lf%lf%lf", &p3.x, &p3.y, &p3.z); scanf("%lf%lf%lf", &p2.x, &p2.y, &p2.z); scanf("%lf%lf%lf", &p4.x, &p4.y, &p4.z); s1 = p3 - p1; s2 = p4 - p2; double t1 = dot(cross(p2 - p1, s2), cross(s1, s2))/dot(cross(s1,s2), cross(s1,s2)); double t2 = dot(cross(p1 - p2, s1), cross(s2, s1))/dot(cross(s2,s1), cross(s2,s1)); P a = p1 + t1 * s1; P b = p2 + t2 * s2; printf("%.6f\n", sqrt(dot(a - b, a - b))); printf("%.6f %.6f %.6f ", a.x, a.y, a.z); printf("%.6f %.6f %.6f\n", b.x, b.y, b.z); } return 0;}
0 0
- hdu 4741 Save Labman No.004
- hdu 4741 Save Labman No.004
- hdu 4741 Save Labman No.004
- HDU 4741 Save Labman No.004
- HDU 4741 Save Labman No.004
- HDU 4741 Save Labman No.004
- [HDU 4741]Save Labman No.004[计算几何][精度]
- hdu 4741 Save Labman No.004(计算几何)
- hdu 4741——Save Labman No.004
- Save Labman No.004
- POJ 4741 Save Labman No.004
- HDU4741 Save Labman No.004
- hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]
- hdu 4741 Save Labman No.004(2013杭州网络赛)
- HDU 4741 Save Labman No.004 2013 ACM/ICPC 杭州网络赛
- hdu 4741 Save Labman No.004 (求异面直线距离及交点)
- hdu 4741 Save Labman No.004 异面直线最短距离及对应的点
- HDU 4741 Save Labman No.004 (异面直线距离&直线与平面的交点)
- 整数型数组元素拼接问题
- HDFS HA中name nodes访问顺序的问题
- 在eclipse中往远程库中push代码遇到下面的错误 https://git.ms.netease.com/kanghuaisong/Git_demo.git: cannot open git-up
- JRE System Libreary[jre1.6.0_05]](unbound)是怎么回事
- socket中的短连接与长连接,心跳包示例详解
- HDU 4741 Save Labman No.004
- linux中exec和xargs命令的区别和优劣分析
- MySQL的btree索引和hash索引的区别
- 可以滚动的View设置padding和scrollbar需要注意
- Bogosort: Sorting by Exchanging
- oc学习总结之类的本质
- Go2Shell默认打开ITerm2或x-term
- linux 用户、用户组和文件权限
- 给Source Insight做个外挂系列之一--发现Source Insight