zoukankan      html  css  js  c++  java
  • 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",否则输出"No"。
    Input示例
    1
    1 2 0
    2 3 0
    4 0 0
    0 0 0
    Output示例
    Yes
    /*
        利用三点的矩阵行列式解出平面方程,带入第四点验证
     */
    #include <bits/stdc++.h>
    
    #define pi acos(-1)
    #define eps 1e-6
    
    using namespace std;
    
    int t;
    struct point{
        double x,y,z;
        point(){}
        point(double _x,double _y,double _z){
            x=_x;
            y=_y;
            z=_z;
        }    
    }a,b,c,d;
    point v1,v2,v3;
    double sa1,sa2,sa3;
    
    int main(){
    //    freopen("in.txt","r",stdin);
        scanf("%d",&t);
        while(t--){
            scanf("%lf%lf%lf",&a.x,&a.y,&a.z);
            scanf("%lf%lf%lf",&b.x,&b.y,&b.z);
            scanf("%lf%lf%lf",&c.x,&c.y,&c.z);
            scanf("%lf%lf%lf",&d.x,&d.y,&d.z);
            double D=-a.x*(b.y*c.z-c.y*b.z)-a.y*(b.x*c.z-c.x*b.z)-a.z*(b.x*c.y-c.z*b.y);
            double A=a.y*(b.z-c.z)+b.y*(c.z-a.z)+c.y*(a.z-b.z);
            double B=a.z*(b.x-c.x)+b.z*(c.x-a.x)+c.z*(a.x-b.x);
            double C=a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y);
            if(d.x*A+d.y*B+d.z*C+D==0){
                puts("Yes");
            }else{
                puts("No");
            }        
        }
        return 0;
    }
  • 相关阅读:
    Java EE 在网页输出九九乘法表、三角形、菱形
    Java EE 在网页输出九九乘法表
    格式化时间(SimpleDateFormat)
    Java代码规范性
    Scanner
    数据库怎么删除相同的内容
    连接池 ----单例模式
    多态和接口
    第一个JAVA应用
    继承
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/7858066.html
Copyright © 2011-2022 走看看