计算几何(暂)

设一次函数 \(y=kx+b\)\((x_1,y_1)\)\((x_2,y_2)\),则:

\[k=\frac{y_2-y_1}{x_2-x_1}~,\quad b=\frac{x_2y_1-x_1y_2}{x_2-x_1}=y_1-kx_1=y_2-kx_2~. \]


两个矩形判断是否相交:

(其中 \((x_1,y_1)\) 为矩形 \(A\) 左下角坐标,\((x_2,y_2)\) 为矩形 \(A\) 右上角坐标。矩形 \(B\) 同理。)

bool check(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){
	if(x2<x3||x4<x1||y2<y3||y4<y1)return 0;
	return 1;
}

两个线段判断是否相交:

bool jiao(Xian l1,Xian l2){
    if ((l1.x1>l1.x2?l1.x1:l1.x2)<(l2.x1<l2.x2?l2.x1:l2.x2)||
        (l1.y1>l1.y2?l1.y1:l1.y2)<(l2.y1<l2.y2?l2.y1:l2.y2)||
        (l2.x1>l2.x2?l2.x1:l2.x2)<(l1.x1<l1.x2?l1.x1:l1.x2)||
        (l2.y1>l2.y2?l2.y1:l2.y2)<(l1.y1<l1.y2?l1.y1:l1.y2)) return 0;
    if ((((l1.x1-l2.x1)*(l2.y2-l2.y1)-(l1.y1-l2.y1)*(l2.x2-l2.x1))*
        ((l1.x2-l2.x1)*(l2.y2-l2.y1)-(l1.y2-l2.y1)*(l2.x2-l2.x1)))>0||
        (((l2.x1-l1.x1)*(l1.y2-l1.y1)-(l2.y1-l1.y1)*(l1.x2-l1.x1))*
        ((l2.x2-l1.x1)*(l1.y2-l1.y1)-(l2.y2-l1.y1)*(l1.x2-l1.x1)))>0) return 0;
    return 1;
}
posted @ 2024-10-03 16:00  Laoshan_PLUS  阅读(16)  评论(0)    收藏  举报