51nod1265(判断四个点是否共面)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265
题意:中文题诶~
思路:假设现有a, b, c, d四个点,若直线 ab, ac, ad线性相关,那么有a, b, c, d共线;
那么我们如何判断其是否线性相关呢? 答案很简单,分别以ab, ac, ad的向量坐标作为一个行列式的行(列)元素,得到一个3阶行式,如果其值为0,则ab, ac, ad线性相关;
这点很好证明,若ab, ac, ad线性相关则有 ab=k1*ac+k2*ad;
又因为行列式的性质1:将某行(列)的元素*k,再加到其他行(列)对应元素上行列式的值不变;
性质2:若行列式有两行(列)的元素相同,那么该行列式的值为0;
那么很显然我们刚才的结论是正确的啦;
代码:
#include <bits/stdc++.h>
using namespace std; struct point{
int x, y, z;
}; int is_coplanar(point a, point b, point c, point d){
point ab, ac, ad;
ab.x=a.x-b.x, ab.y=a.y-b.y, ab.z=a.z-b.z;
ac.x=a.x-c.x, ac.y=a.y-c.y, ac.z=a.z-c.z;
ad.x=a.x-d.x, ad.y=a.y-d.y, ad.z=a.z-d.z;
int gg=ab.x*ac.y*ad.z+ab.y*ac.z*ad.x+ac.x*ad.y*ab.z;
gg-=ab.z*ac.y*ad.x+ab.x*ac.z*ad.y+ab.y*ac.x*ad.z;
return gg;
} int main(void){
int t;
cin >> t;
while(t--){
point a, b, c, d;
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;
if(!is_coplanar(a, b, c, d)){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
}
return ;
}
51nod1265(判断四个点是否共面)的更多相关文章
- Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...
- 51nod1265判断四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...
- 简单几何(判断矩形的位置) UVALive 7070 The E-pang Palace(14广州B)
题目传送门 题意:给了一些点,问组成两个不相交的矩形的面积和最大 分析:暴力枚举,先找出可以组成矩形的两点并保存起来(vis数组很好),然后写个函数判断四个点是否在另一个矩形内部.当时没有保存矩形,用 ...
- hihoCoder 1040 矩形判断(计算几何)
http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...
- Swift流程控制之循环语句和判断语句详解
Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代 ...
- linux shell 之if-------用if做判断
综合网络,略有修改, 一 简介 1 字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0 ...
- [hihoCoder]矩形判断
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- [BC]Four Inages Strategy(三维空间判断正方形)
题目连接 :http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=577&pid=1001 题目大意:在三维空间中, ...
- 轨迹系列5——验证轨迹GPS坐标转换为本地坐标的四/七参数是否准确的一种方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 目前对多个项目轨迹不准确的情况做了排查,发现导致轨迹偏移百分 ...
随机推荐
- JMeter 分布式部署
Jmeter 是java 应用,对于CPU和内存的消耗比较大,使用单台机器模拟以千计的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误. 为了让jmeter工具提供更大的负载能力,jmeter短 ...
- Thymeleaf
1.在html顶部添加 <html xmlns:th="http://www.thymeleaf.org"> 2.url表达式 @{...} <link rel= ...
- .vue文件里引用单独样式和js文件
style只能引一个,script可以引多个
- 【转】Python实现不同格式打印九九乘法表
前言:最近在学习Python,学习资源有慕课网上的视频教程.菜鸟教程以及Python官方文档tutorial.虽然了解了Python的基本语法,但是还没有真正意义上输出自己写的代码.代码小白,之前仅学 ...
- C++ cast
excerpted from Type conversions K&R Section 2.7 p59 对type conversion 的解释: The precise meaning of ...
- [Android]优化相关
尽量减少布局的层次,最多10层,可以通过LinearLayout向RelativeLayout的转变来减少层的数量 使用ListView的时候,getView方法中的对象尽量重用
- vim vi Ubuntu
在vi编辑模式下按退格键不能删除内容,按方向键不能上下左右移动?如果是则:1. 在vi里非编辑模式下按冒号进入到末行命令模式,然后输入set nocompatible,回车,然后在进入vi编辑模式,看 ...
- psutil 模块
psutil.pids()查看单个进程p = psutil.Process(2423) p.name() #进程名p.exe() #进程的bin路径p.cwd() #进程的工作目录绝对 ...
- [译]flexbox全揭秘
原文:http://css-tricks.com/snippets/css/a-guide-to-flexbox/ 弹性布局(弹性盒子,现今仍是w3c的候选推荐),目标在于,对于一个容器中的各个项目块 ...
- 《深入理解Java虚拟机》学习笔记1-内存数据区域
1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 ...