zoukankan      html  css  js  c++  java
  • 51nod 1265 四点共面

    给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。
     
     

    输入

    第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
    第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。

    输出

    输出共T行,如果共面输出"Yes",否则输出"No"。

    输入样例

    1
    1 2 0
    2 3 0
    4 0 0
    0 0 0

    输出样例

    Yes
    证明四点共面只需要看看四个点能否组成一个四面体,如果能的话就是四点不共面即面积不为0,四个点组成三条边,通过向量行列式的值求体积,如果行列式值为0,就是共面的。
    三阶行列式的值比较好求。
    代码:
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #define MAX 101
    using namespace std;
    int t,point[4][3],line[3][3];
    int main() {
        scanf("%d",&t);
        while(t --) {
            for(int i = 0;i < 4;i ++) {
                for(int j = 0;j < 3;j ++) {
                    scanf("%d",&point[i][j]);
                    if(i > 0) {
                        line[i - 1][j] = point[i][j] - point[0][j];
                    }
                }
            }
            int a = line[0][0] * (line[1][1] * line[2][2] - line[1][2] * line[2][1]);
            int b = line[0][1] * (line[1][2] * line[2][0] - line[1][0] * line[2][2]);
            int c = line[0][2] * (line[1][0] * line[2][1] - line[1][1] * line[2][0]);
            if(a + b + c == 0) printf("Yes
    ");
            else printf("No
    ");
        }
    }
  • 相关阅读:
    团队第二次冲刺10(6.03)
    购买图书问题
    找水王02
    学习进度13
    团队第二次冲刺09(6.02)
    团队第二次冲刺08(6.01)
    C++通过Swig跨线程回调Python代码
    Windows 10系统永久关闭Windows Defender Antivirus防病毒程序方法
    Windows系统Python直接调用C++ DLL
    Windows10系统Python2.7通过Swig调用C++过程
  • 原文地址:https://www.cnblogs.com/8023spz/p/9942409.html
Copyright © 2011-2022 走看看