51Nod-1265 四点共面
51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=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, C三个向量, 求出 A X B (cross product), 就是以A B构成的平面的一个法向量(如果 AB共线,则法向量为0), 在求其与C之间的点积, 如果为0, 则表示两个向量为0。 所以四点共面。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <cmath>
using namespace std; struct Node{
double x, y, z;
}; int main(){
// freopen("in.txt", "r", stdin); int test_num;
Node a[5];
double ans;
scanf("%d", &test_num);
while(test_num--){
for(int i=0; i<4; ++i){
scanf("%lf %lf %lf", &a[i].x, &a[i].y, &a[i].z);
}
// the cross product of (a,b)
a[4].x = -(a[1].z - a[0].z)*(a[2].y - a[0].y)+ (a[1].y - a[0].y)*(a[2].z - a[0].z);
a[4].y = (a[1].z - a[0].z)*(a[2].x-a[0].x) - (a[1].x - a[0].x)*(a[2].z - a[0].z);
a[4].z = (a[1].x -a[0].x)*(a[2].y - a[0].y) - (a[1].y-a[0].y)*(a[2].x - a[0].x );
// the dot product of cp(a,b) and c
ans = (a[3].x - a[0].x)*(a[4].x) + (a[3].y-a[0].y)*a[4].y + (a[3].z-a[0].z)*a[4].z;
if( fabs(ans) <= 1e-9){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}
51Nod-1265 四点共面的更多相关文章
- 51Nod 1265 四点共面(计算几何)
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面). ...
- 51nod 1265 四点共面【计算几何+线性代数】
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...
- 51nod 1265 四点共面——计算几何
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...
- 51Nod:1265 四点共面
计算几何 修改隐藏话题 1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点 ...
- 51nod1265 四点共面
题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:( ...
- 51nod1265四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如 ...
- (四点共面) 51nod1265 四点共面
1265 四点共面 1 秒 131,072 KB 0 分 基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...
- 51nod--1265 四点共面 (计算几何基础, 点积, 叉积)
题目: 1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4 ...
- 51nod1265判断四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...
随机推荐
- 基本排序算法——shell排序java实现
shell排序是对插入排序的一种改进. package basic.sort; import java.util.Arrays; import java.util.Random; public cla ...
- supermap iclient for js 标签专题图(服务端)
<!DOCTYPE><html> <head> <meta http-equiv="Content-Type" content=" ...
- sharePoint 2016 弃用和删除的功能
前言 sharepoint 2016版本正式发布,但是相比较2013版本,还是删除或者准备删除一些功能,我们需要了解一下哪些功能已经被删除掉或者在下一个版本中移除,因为这些可能影响我们现有系统是否能够 ...
- C#操作Excell常用方法
这是在博客园看的文章,写的很好,所以转一下,方便自己以后用到的时候可以随时查看. range.NumberFormatLocal = "@"; //设置单元格格式为文本 r ...
- Xcode 创建.a和framework静态库(转载)
库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...
- ORA-04063: view "SYS.DBA_REGISTRY" has errors
测试环境做了RMAN还原(从10.2.0.4.0 32bit 还原到 10.2.0.4.0 64bit)后,查询dba_registry系统视图时报如下错误 SQL> select comp_ ...
- -bash: ulimit: pipe size: cannot modify limit: Invalid argument
从root账号切换到oracle账号时,出现了"-bash: ulimit: pipe size: cannot modify limit: Invalid argument"提示 ...
- ElasticSearch大数据分布式弹性搜索引擎使用
阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成 ...
- SQL Server 2008 R2——使用FULL OUTER JOIN实现多表信息汇总
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- android nagative drawer图标跟标题适配
<?xml version="1.0" encoding="utf-8"?> <resources> <string name=& ...