判断四点共面

1265 . 四点共面

基准时间限制:1 秒 空间限制:65536 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

//思路:由四个点创建三个向量,构成一个行列式,若行列式值为0,共面。

3阶行列式的计算方法:[28]

#include<cstdio>
struct point
{
    int x,y,z;
}p[1001];
int main()
{
    int t,i,ans;
    point s1,s2,s3;
    scanf("%d",&t);
    while(t--)
    {
        for(i=0;i<4;i++)
        scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
        s1.x=p[1].x-p[0].x;s1.y=p[1].y-p[0].y;s1.z=p[1].z-p[0].z;
        s2.x=p[2].x-p[0].x;s2.y=p[2].y-p[0].y;s2.z=p[2].z-p[0].z;
        s3.x=p[3].x-p[0].x;s3.y=p[3].y-p[0].y;s3.z=p[3].z-p[0].z;
        ans=s1.x*s2.y*s3.z+s1.y*s2.z*s3.x+s1.z*s2.x*s3.y-s1.z*s2.y*s3.x-s1.x*s2.z*s3.y-s1.y*s2.x*s3.z;
        if(ans==0) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}
时间: 2024-10-12 08:01:52

判断四点共面的相关文章

51Nod 1265 四点共面

1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000

1265 四点共面

1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000

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 <

四点共面

1265 四点共面  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 &l

51nod_1265:四点共面(计算几何)

题目链接 设四点为a_0~3,若共面则 (a1a0*a2a0)·a3a0=0 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; typedef long long LL; const double eps=1e-8; struct

51NOD 1265 四点共面(计算几何)

传送门 给出三维空间上的四个点(点与点的位置均不相同),判断这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&

51 nod 1265 四点共面

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 思路 : 通过矩阵 AB=(x2-x1,y2-y1,z2-z1) BC=(x3-x2,y3-y2,z3-z2) AB=(x4-x3,y4-y3,z4-z3) 所以,只要考察矩阵: x2-x1,y2-y1,z2-z1 x3-x2,y3-y2,z3-z2 x4-x3,y4-y3,z4-z3 如果行列式为0,说明4点共面. 如果行列式不为0,说明4点不共面.

[51nod1265]四点共面

解题关键:此题有多种解法 三条直线组成的矩阵delta为0,则共面,否则,不共面 Gauss消元法 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 struct tpoint{ 5 double x,y,z; 6 tpoint operator-(const tpoint &p)const{ 7 tpoint q; 8 q.x=x-p.x; 9 q.y=y-p.y; 10 q.z=z-

三维坐标下判断P点是否在三角形ABC中

在网上找的都是二位坐标下的,我写个三维的吧 1.面积法 同二位坐标下一样,只需要判断三角形ABC的面积是否等于S_ABP+S_BCP+S_ACP.当然此方法需要开好几个根,不仅效率很低,还会损失精度,所以我使用的输入类型是int,并把误差控制到10E(-8).里面还用到了一点向量的知识,但很好理解.代码如下: 1 #include<iostream> 2 #include<cmath> 3 #include<stdlib.h> 4 using namespace std