51nod--1265 四点共面 (计算几何基础, 点积, 叉积)
题目:
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 四点共面 (计算几何基础, 点积, 叉积)的更多相关文章
- 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个点 ...
- 计算几何基础——矢量和叉积 && 叉积、线段相交判断、凸包(转载)
转载自 http://blog.csdn.net/william001zs/article/details/6213485 矢量 如果一条线段的端点是有次序之分的话,那么这种线段就称为 有向线段,如果 ...
- 51nod1265 四点共面
题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:( ...
- 51Nod-1265 四点共面
51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 1265 四点共面 基准时间限制:1 秒 ...
- 51nod1265四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如 ...
- (四点共面) 51nod1265 四点共面
1265 四点共面 1 秒 131,072 KB 0 分 基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...
随机推荐
- [Android] Android 注解绑定UI View组件库 ButterKnife 的使用
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...
- 查看swap占用情况
查看swap被占用的情况 #!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/ ...
- 【LDAP】LDAP注入漏洞与防御
0x01 前言 前两天爆了一个LDAP漏洞,据说存在了8年现在才被发现,感概一下,不知这8年来有多少站被搞了... 想着复现这个漏洞,就先复习一下LDAP注入的相关知识吧,差了很多资料,记一下笔记. ...
- jdbc 日期处理问题
1.从结果集中取得日期部分 resultSet.getDate(); --2013-01-07 2.从结果集中取得时间部分 resultSet.getTime() --22:08:09 3.从结 ...
- Coursera, Machine Learning, SVM
Support Vector Machine (large margin classifiers ) 1. cost function and hypothesis 下面那个紫色线就是SVM 的cos ...
- RHEL 6.4 通过mysql安装文件安装mysql
参考文章:http://www.linuxidc.com/Linux/2013-12/93507.htm 1.首先下载mysql安装文件 我是下载的最新版的5.6 2. 以RPM方式安装MySQL 在 ...
- Hbase思维导图之逻辑结构
- flask的基础认识
刚开始学习flask基础知识,有了一点点的认识,所以在此大概写一下自己的理解,详细步骤和功能在代码段介绍: from flask import Flask,render_template,reques ...
- mysql 案例 ~ mysql字符集详解
一 谈谈mysql常见的字符集问题 二 字符集统一 1 character_set_server 2 character_set_client 3 java/php等连接字符集 4 chara ...
- IDEA 启动时 自定义配置-只是看一下而已--注册激活
可以看到很多东西,比如 :Application Server 都这么类型 ============ ===== 2017年11月10日14:25:30 原来是这样注册的,号称最简单的 2017年11 ...