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
    ");
        }
    }
  • 相关阅读:
    Java对象克隆
    Java对象toString()方法
    Java对象相等比较(Equals)
    数据传送到后端(二)
    前端数据传送至后端(一)
    jquery导航栏(方法1)
    js导航栏
    纯css导航栏
    jquery导航栏(方法2)
    带尖角的边框(方法二)
  • 原文地址:https://www.cnblogs.com/8023spz/p/9942409.html
Copyright © 2011-2022 走看看