計算幾何模版

2022-10-15 08:27:07 字數 2148 閱讀 2514

pi=3.

#include <>

#include

using namespace std;

/* 常用的常量定義 */

#define inf 1e200

#define ep 1e-10

#define maxv 300

#define pi 3.14159265

/* 基本幾何結構 */

struct point //constructor

}; struct lineseg

lineseg()

}; struct line

}; double max(double a,double b)

double min(double a,double b)

* ** 點的基本運算 *

* *double dist(point p1,point p2)

bool equal_point(point p1,point p2)

r=multiply(sp,ep,op),得到(sp-op)*(ep-op)的叉積

r>0:ep在向量opsp的逆時針方向;

r=0:opspep三點共線;

r<0:ep在向量opsp的順時針方向

double multiply(point sp,point ep,point op)

r=dotmultiply(p1,p2,op),得到向量(p1-op)和(p2-op)的點積,如果兩個向量都非零向量

r<0:兩向量夾角為銳角;r=0:兩向量夾角為直角;r>0:兩向量夾角為鈍角

double dotmultiply(point p1,point p2,point p0)

/* 判斷點p是否**段l上,條件:(p**段l所在的直線上)&& (點p在以線段l為對角線的矩形內) */

bool online(lineseg l,point p)

// 返回點p以點o為圓心逆時針旋轉alpha(單位:弧度)後所在的位置

point rotate(point o,double alpha,point p)

/* 返回頂角在o點,起始邊為os,終止邊為oe的夾角(單位:弧度)

角度小於pi,返回正值

角度大於pi,返回負值

可以用於求線段之間的夾角

*/ double angle(point o,point s,point e)

* ** 線段及直線的基本運算 *

* */* 判斷點與線段的關係,用途很廣泛

本函式是根據下面的公式寫的,p是點c到線段ab所在直線的垂足

ac dot ab

r  ||ab||^2

(cx-ax)(bx-ax) + (cy-ay)(by-ay)

l^2r has the following meaning:

r=0 p = a

r=1 p = b

r<0 p is on the backward extension of ab

r>1 p is on the forward extension of ab

0*/double relation(point p,lineseg l)

// 求點c到線段ab所在直線的垂足 p

point perpendicular(point p,lineseg l)

/* 求點p到線段l的最短距離,並返回線段上距該點最近的點np

注意:np是線段l上到點p最近的點,不一定是垂足 */

double ptolinesegdist(point p,lineseg l,point &np)

if(r>1)

np=perpendicular(p,l);

return dist(p,np);

} // 求點p到線段l所在直線的距離,請注意本函式與上個函式的區別

double ptoldist(point p,lineseg l)

/* 計算點到折線集的最近距離,並返回最近點.

注意:呼叫的是ptolineseg()函式 */

double ptopointset(int vcount,point pointset,point p,point &q) {

int i;

double cd,td; cd=inf;

lineseg l;

point tq,cq;

幾何證明與計算

2012年寒假九年級數學學案二 幾何證明與計算 一 基礎回顧 1.如圖,菱形abcd的周長為20cm,de ab,垂足為e,則下列結論中正確的個數為 de 3cm eb 1cm a 3個 b 2個c 1個 d 0個 2.2011山東菏澤 一次數學活動課上,小聰將一副三角板按圖中方式疊放,則 等於 a...

幾何證明和計算

一 合理構建直角三角形,運用勾股定理求線段的長度。常用方法 1 作垂直線段直接構建直角三角形 2 連線某兩點,證所得的新三角形是直角三角形,再運用勾股定理求線段的長度。例題 如圖,梯形中,點是梯形外的兩點,且.1 求證 2 若求線段的長 1 證明 梯形中,且為等邊三角形.1分 又2分 在和中3分 4...

幾何計算與證明

1 如圖,已知ab是 o的直徑,過 o上的點c的切線交ab的延長線於e,ad ec於d且交 o於f。求證 ad df ab 若ce eb 求 ade的面積。2 已知p是 xay的平分線上的一點,過a p兩點任作一圓,若此圓交 xay的兩邊於b c。求證 ab ac為一定值。3 如圖,已知 o1和 o...