P4724 模板 三維凸包 簡潔

2022-05-02 06:12:07 字數 1049 閱讀 3906

給出空間中n個點,求凸包表面積。

第一行乙個整數n,表示點數。

接下來n行,每行三個實數x,y,z描述座標。

輸出凸包表面積,保留3位小數。

輸入 #1

4 0 0 0

1 0 0

0 1 0

0 0 1

輸出 #1

2.366

n≤2000

#include//三維凸包

using

namespace

std;

const

int n = 2010

;const

double eps = 1e-9

;int

n, cnt, vis[n][n];

double

ans;

double rand()

double reps()

struct

node

double len()

node

operator-(node a) ; }

node

operator*(node a) ; }

double

operator&(node a)

} a[n];

struct

face

double area()

} f[n], c[n];

int see(face a, node b)

void

convex_3d() ;

f[++cnt] = (face) ;

for (int i = 4, cc = 0; i <= n; i++)

for (int j = 1; j <= cnt; j++)

for (int k = 0; k < 3; k++) ;

}for (int j = 1; j <= cc; j++) f[j] =c[j];

cnt =cc;

cc = 0

; }

}int

main()

luogu P4724 模板 三維凸包

link 三維凸包 乙個非常古老的知識點。估計也沒啥用。大體上了解了過程 能背下來就背下來吧.乙個bf 暴力列舉三個點 此時只需要判斷所有的點都在這個面的另外一側就可以說明這個面是三維凸包上的面了。乙個問題 多點共面問題。乙個trick 可以利用擾動法然後 就可以解決這個問題了。正解 n 2 的增量...

uvalive5090 三維凸包

題意 給出一些三維的點,求出乙個凸包,輸出凸包有多少個表面。思路 模板。隊友找了乙個巨全面的模板,貼過來。include include include include includeusing namespace std const int maxn 550 const double eps 1e...

三維凸包之增量演算法

演算法工作過程 選取點集中的四個點構成乙個初始的四面體 選兩個點p1,p2,再選乙個點p3,p3和p1,p2不在同一條直線上,這樣形成了乙個面。再選乙個點,不在同乙個面上,形成乙個四面體。然後繼續研究剩餘的點 點在四面體內部,略過。點在四面體外部,刪除此點能 看見 的面,擴大凸包體積。大意 求解多面...