题目:

1265 四点共面

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注

给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出”Yes”,否则输出”No”。

Input

第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)

第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。

Output

输出共T行,如果共面输出”Yes”,否则输出”No”。

Input示例

1

1 2 0

2 3 0

4 0 0

0 0 0

Output示例

Yes

分析:

三维向量点积, 叉积的运用吧,
在三维向量中, a * b = 0, 则a 垂直于 b;
c = a x b , c 向量垂直于 a b 向量所在的平面,
即 c * a = 0 && c* b = 0
题目是求 四点共面, 四个点, 先构造 3 个向量,
在叉积, 点积, 判断是否为 0 就得出结果了。

实现:

#include <bits/stdc++.h>

using namespace std;

const double eps = 1e-8;

struct Point3 {
double x, y, z;
Point3(double _x = 0, double _y = 0, double _z = 0) : \
x(_x), y(_y),z(_z) {}
}; typedef Point3 Vector3; Vector3 operator - (Point3 A, Point3 B) {
return Vector3(A.x-B.x, A.y-B.y, A.z-B.z);
} double Dot(Vector3 A, Vector3 B) { return A.x*B.x + A.y*B.y + A.z*B.z; }
Vector3 Cross(Vector3 A, Vector3 B) {
return Vector3( A.y*B.z - A.z*B.y, A.z*B.x - A.x*B.z, A.x*B.y - A.y*B.x );
} Point3 A,B,C,D; int main() {
int T;
cin >> T;
while(T--) {
cin >> A.x >> A.y >> A.z
>> B.x >> B.y >> B.z
>> C.x >> C.y >> C.z
>> D.x >> D.y >> D.z;
Vector3 tmp = Cross(A-B, A-C);
double ans = Dot(tmp, A-D);
if (fabs(ans) < eps) printf("Yes\n");
else printf("No\n");
}
}

(此文章顺便学习一下markdown的语法)

51nod--1265 四点共面 (计算几何基础, 点积, 叉积)的更多相关文章

  1. 51Nod 1265 四点共面(计算几何)

    1265 四点共面  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面). ...

  2. 51nod 1265 四点共面【计算几何+线性代数】

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...

  3. 51nod 1265 四点共面——计算几何

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...

  4. 51Nod:1265 四点共面

    计算几何 修改隐藏话题 1265 四点共面  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点 ...

  5. 计算几何基础——矢量和叉积 && 叉积、线段相交判断、凸包(转载)

    转载自 http://blog.csdn.net/william001zs/article/details/6213485 矢量 如果一条线段的端点是有次序之分的话,那么这种线段就称为 有向线段,如果 ...

  6. 51nod1265 四点共面

    题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:( ...

  7. 51Nod-1265 四点共面

    51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 1265 四点共面 基准时间限制:1 秒 ...

  8. 51nod1265四点共面

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如 ...

  9. (四点共面) 51nod1265 四点共面

    1265 四点共面 1 秒 131,072 KB 0 分 基础题   给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...

随机推荐

  1. windows server 禁用智能卡服务的步骤

    许多用户对于系统中的很多功能都不太了解,其中智能卡服务更是少有人知.智能卡服务就是对插入的智能卡进行管理和访问控制,大多数用户都无需使用此项功能.那么在Win7系统中要怎么取消智能卡服务呢? 1.首先 ...

  2. Nginx负载均衡session会话保持方法

    负载均衡时,为了保证同一用户session会被分配到同一台服务器上,可以使用以下方法: 1.使用cookie 将用户的session存入cookie里,当用户分配到不同的服务器时,先判断服务器是否存在 ...

  3. LINQ to SQL 中 Concat、Union、Intersect、Except 方法的使用

    Ø  前言 LINQ to SQL 中需要对两个或多个数据集进行操作,比如:合并.取交集等,主要使用下面四个方法,这四个方法都是 System.Linq.IQueryable<out T> ...

  4. spring boot2 整合(一)Mybatis (特别完整!)

    大概介绍下流程: 借助idea实现mybatis逆向工程 用xml配置实现整合 用cmd命令行实现mybatis逆向工程 用mapping.xml配置实现数据交互 用注解的方式实现数据交互 首先我的开 ...

  5. python3.x与2.x区别

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  6. solr 中文分词器IKAnalyzer和拼音分词器pinyin

    solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 “冬天到了天气冷了小明不想上学去了”,点击右边的按钮,发现对每个字都进行分词. ...

  7. Andrew NG 机器学习编程作业4 Octave

    问题描述:利用BP神经网络对识别阿拉伯数字(0-9) 训练数据集(training set)如下:一共有5000个训练实例(training instance),每个训练实例是一个400维特征的列向量 ...

  8. oracle 任务备份

    @echo offset hour=%time:~,2%if "%time:~,1%"==" " set hour=0%time:~1,1%set temp=% ...

  9. 嵌入式-迅为iTOP-4418/6818开发板编译Android镜像技术分享

    迅为是基于Ubuntu12.04.2 平台做开发,所有的配置和编译脚本也是基于此平台.如果你对Linux 和Android 开发很熟悉,相信你会根据错误提示逐步找到原因并解决,错误提示一般是选用的平台 ...

  10. ORA-01882 timezone region not found

    解决方案有2个 1.在java运行环境中添加配置,制定时区 -Duser.timezone=GMT 2.修改系统时区 linux 下 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) ...