zoukankan      html  css  js  c++  java
  • bzoj1964: hull 三维凸包

    传送门

    二维平面四个点求凸包面积->任选三个点面积之和/2

    三维平面五个点求凸包体积->任选四个点体积之和/2

    二维平面三个点面积->二个二维向量行列式值的绝对值/2

    三维平面四个点体积->三个三维向量行列式值的绝对值/6

     1 //Achen
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<cstdlib>
     6 #include<vector>
     7 #include<cstdio>
     8 #include<queue>
     9 #include<cmath>
    10 #include<set>
    11 #include<map>
    12 #define Formylove return 0
    13 #define For(i,a,b) for(int i=(a);i<=(b);i++)
    14 #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
    15 typedef long long LL;
    16 typedef double db;
    17 using namespace std;
    18 
    19 template<typename T>void read(T &x)  {
    20     char ch=getchar(); x=0; T f=1;
    21     while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
    22     if(ch=='-') f=-1,ch=getchar();
    23     for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
    24 }
    25 
    26 struct pt {
    27     db x,y,z;
    28     pt(db x=0.0,db y=0.0,db z=0.0):x(x),y(y),z(z){}
    29 }p[10];
    30 pt operator -(const pt&A,const pt&B) { return pt(A.x-B.x,A.y-B.y,A.z-B.z); }
    31 
    32 db calc(pt p1,pt p2,pt p3,pt p4) {
    33     p1=p1-p4; p2=p2-p4; p3=p3-p4;
    34     db rs=(p1.x*p2.y*p3.z-p3.x*p2.y*p1.z+p1.y*p2.z*p3.x-p1.x*p2.z*p3.y+p1.z*p2.x*p3.y-p1.y*p2.x*p3.z);
    35     return fabs(rs)/6.0;
    36 }
    37 
    38 int main() {
    39 #ifdef ANS
    40     freopen(".in","r",stdin);
    41     freopen(".out","w",stdout);
    42 #endif
    43     while(scanf("%lf%lf%lf",&p[1].x,&p[1].y,&p[1].z)!=EOF) {
    44         db ans=0;
    45         For(i,2,5) scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
    46         For(i,1,5) For(j,i+1,5) For(k,j+1,5) For(l,k+1,5) 
    47             ans+=calc(p[i],p[j],p[k],p[l]);
    48         ans/=2.0;
    49         printf("%.2lf
    ",ans);
    50     } 
    51     Formylove;
    52 }
    View Code
  • 相关阅读:
    一个、说到所有的扩展指标
    时序图、流程图
    流程图总结
    UML活动图与流程图的区别
    类图与对象图
    app的描述-软件的描述
    UML的目标
    软件建模的用途
    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
    Serializable 和 Parcelable 区别
  • 原文地址:https://www.cnblogs.com/Achenchen/p/9502235.html
Copyright © 2011-2022 走看看