判断四个点是否在同一个平面上
算出从同一个点出发的三个向量,如果这三个向量的x,y,z值所构成的行列式结果为零,则这四个点在同一平面上,否则不同一平面
如A,B,C,D四点
三个向量AB(x2-x1,y2-y1,z2-z1),AC(x3-x1,y3-y1,z3-z1),AD(x4-x1,y4-y1,z4-z1)(是向量,BA,AB是不同向量)
V=|[AB AC AD]|(混合积)
V= |x2-x1 y2-y1 z2-z1|
|x3-x1 y3-y1 z3-z1|
|x4-x1 y4-y1 z4-z1|
如果V=0,则四点共面
如果V!=0,则四点不同在一平面
#include<iostream>
#include<math.h>
#include<cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
class Point
{public:int x, y, z;Point(int a, int b, int c){x = a;y = b;z = c;}
};
class isFlat
{public:int x, y, z;isFlat(int a, int b, int c){x = a;y = b;z = c;}int cul(isFlat& v2, isFlat& v3){return(x * (v2.y) * (v3.z) + (v2.x) * (v3.y) * z + y * (v2.z) * (v3.x) - z * (v2.y) * (v3.x) - x * (v2.z) * (v3.y) - y * (v2.x) * (v3.z));}
};
int main()
{int n;cin >> n;while (n--){int x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4;cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2 >> x3 >> y3 >> z3 >> x4 >> y4 >> z4;Point p1(x1, y1, z1), p2(x2, y2, z2), p3(x3, y3, z3), p4(x4, y4, z4);//记录四个点isFlat v1(x2 - x1, y2 - y1, z2 - z1), v2(x3 - x1, y3 - y1, z3 - z1), v3(x4 - x1, y4 - y1, z4 - z1);//由同一点出发的三个向量int result = v1.cul(v2, v3);//行列式结果if (result == 0){cout << "Yes" << endl;}else{cout << "No" << endl;}}return 0;
}
判断四个点是否在同一个平面上相关推荐
- 通过子网掩码留一个ip_教大家如何判断俩个IP是不是在同一个网段?什么是子网掩码?...
一.什么是子网掩码? 在了解ip地址的网段之前,我们先来了解子网掩码,很多对网络了解不深的朋友都对子网掩码有些迷惑, 不了解它是用来干什么的? 子网掩码不能单独存在,它必须结合IP地址一起使用.子网掩 ...
- c语言长和宽判断是否是正方形,C++ 如何判断四个点是否构成正方形
判断方法分为两步: 1.判断四条边是否相等: 2.判断是否有一个角为直角: 求解两点之前距离的函数: double Distance(int x1,int y1,int x2,int y2){ ret ...
- 判断四个点是不是组成正方形
判断四个点是不是组成正方形 给出几组数,每组的第一行为横坐标,第二行为纵坐标.看其是否组成正方形 代码 #coding=utf-8 import sys if __name__ == "__ ...
- C++判断四个点能否构成正方形
参考博客https://blog.csdn.net/yangkunpengD/article/details/51329115 对其进行了修改,思路大致一样. 判断方法:三个条件同时满足(1:四条边相 ...
- DB2数据库 SQL语句判断两个日期 是否属于同一个季度
根据字段dsdate选择月份,以下语句可以判断一个月份的季度, SQL语句为: CASE WHEN SUBSTR(dsdate,6,2) BETWEEN 1 AND 3 THEN 1WHEN SUBS ...
- C语言算2个坐标点之间的距离,c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode...
#include #include #include char explode( char * str , char symbol ); double distance ( int x1 , int ...
- 圆与平面的接触面积_如果一个绝对的圆放在绝对的平面上,接触面是不是无限小?...
这种问题其实并不难解答:如果你真的能找到一个绝对的圆还有一个绝对平的平面上,并且保证放上去之后圆和平面不会有任何变化,那么接触面就可以是无限小! 如果不能,很抱歉,接触面很显然就不会是无限小! 那么你 ...
- 平面上N个点,求斜率最大的那条直线通过的两点
平面上N个点,每两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑).时间效率越高越好. 关于这道题,网上已经给出了解答要点: 3个点A,B,C,把它们的按x坐标排序. ...
- 平面上N个点求斜率最大的两个点
平面上N个点求斜率最大两个点 1.根据X将N个点排序 2.最大的斜率为max(p[i], p[i+1]) 可以证明如果有ABC三个点则AB与BC的斜率一个大于AC另一个则小于AC, k3 = (c - ...
- 复平面上gamma函数_神奇的Gamma函数 (中)
Gamma 函数欣赏 Each generation has found something of interest to say about the gamma function. Perhaps ...
最新文章
- 让自己的开源项目支持CocoaPods集成
- java项目怎样提高性能_从代码的角度谈如何优化JAVA代码以提高性能【初、中级程序员必看】...
- htmlunit爬虫工具使用--模拟浏览器发送请求,获取JS动态生成的页面内容
- centos 启动一个redis_基于prometheus+grafana体系监控redis缓存服务
- Lua语言模型 与 Redis应用
- python如何对文件进行批量命名-利用Python对文件批量重命名
- linux gpio管脚功能配置API
- bigsur cdr文件_clover和oc的杂交-openclover,big sur也可以直接用clover来引导了,小白一步一步教你...
- vmware服务器文件备份,三种VMware数据备份和恢复方法
- 【MySQL】MySQL复制技术
- lisp画弯箭头_在CAD中直接用命令画箭头
- 使用Python计算身份证号码最后检验位
- 学习总结-《父与子的编程之旅》chapter 6
- 计算机专业班级工作计划,网络计算机班班主任工作计划
- vscode 单击跳转_vscode中ctrl+鼠标左键不能跳转
- RIA E100 操作方式
- 将代码保留原格式(高亮)复制到word
- 读浅墨博客 十二 笔记
- Vitamix 5200和BlendTec等三个品牌评测
- ZMY_HTttpUtils获取网络信息