計算幾何 記錄求兩球體相交部分體積(球缺)模板

2021-09-17 21:06:41 字數 1436 閱讀 8480

#include#include#include#include#define clr(a,b) memset(a,b,sizeof(a));

const int inf=0x3f3f3f3f;

using namespace std;

const double pi = acos(-1.0);

typedef unsigned long long ll;

const int maxn= 110;

typedef struct point

point(double a, double b,double c)

point operator -(const point &b)const

point operator +(const point &b)const

//數乘計算

point operator *(const double &k)const

point operator /(const double &k)const

double operator *(const point &b)const

}point;

double dist(point p1, point p2)

typedef struct sphere sphere;

sphere s,a[maxn];

void sphereintervs(sphere a, sphere b,double &v,double &s)

int t, n;

double x, y, z, r;

int cas = 1;

int main()

; }

scanf("%lf%lf%lf%lf",&x,&y,&z,&r);

s.r = r;

s.centre = ;

double ans = 0, v = 0;

for(int i = 1; i <= n; i++)

sphereintervs(s, a[i], v, ss); //相交部分

三種情況,兩圓圓心都不在相交區域,兩圓圓心都在相交區域,只有一圓圓心在相交區域,公式全部適用。

c1到c2的距離為d,c1到o點的距離為l1,c2到o點的距離為l2,x1為圓c1的球缺的高,x2為圓c2的球缺的高。

計算幾何 判斷兩矩形是否相交

問題定義 給定兩個邊與座標軸平行的矩形,分別由左上角與右下角兩點指定 以此同時,我們可以用右上和左下的兩個點來進行推出同樣的結果。即矩形 p1,p2 與 p3,p4 判斷兩矩形是否相交。我的思路 如下圖所示,首先求出p1與p3點在x方向較大值與y方向較大值的交點,在下圖中就是p3,用紅點 記為m點 ...

計算幾何之求兩線段的交點

當兩條線段有交點的時候,交點座標可以用叉乘來求。思路就是連線線段的端點,構造向量,從而構造出相似三角形,然後求出交點在一條線段上的位置 用比例t來表示 然後再加到線段端點上就可以了。題目 cgl 2 c ac include include include using namespace std d...

計算幾何之 判斷兩個線段是否相交

1.判斷兩個線段是否相交,需要檢測線段是否兩兩橫跨。所謂橫跨,即是點p1 位於向量n 的一邊,且另一點p2 位於向量n 的另一邊 2.此外,還需考慮邊界情況,即一條線段的某個端點位於另一條線段上。判斷線段p1p2,p3p4 是否相交,演算法流程如下 segment intersect p1,p2,p...