計算幾何概述

2021-09-30 11:10:03 字數 2878 閱讀 7636

順著向量a

看,如果

b在它的左邊,那麼向量a與

b的叉積大於

0;若共線,等於

0;若在右邊,小於0。

直線的引數表示。

直線上任意一點p

滿足p=p0+t*v ,t為引數v為向量。引數方程最方便的地方在於直線、射線和線段的方程形式是一樣的,區別僅在於t

的範圍限制。

直線交點。設直線l1

與l2 

引數表示式分別為 

標頭檔案:

struct point;

typedef point vector;

//向量與向量的+ - 點積 叉積

vector operator +(const vector& a,const vector& b);

vector operator -(const vector& a,const vector& b);

double dot(const vector& a,const vector& b);

double cross(const vector& a,const vector& b);//叉積結果仍為向量,這裡是模

bool operator < (const vector& a,const vector& b);//向量間關係運算子

int dcmp(double x); //處理double資料,減少精度問題

bool operator == (const vector& a,const vector& b);//過載==運算子

//向量與數字的乘除

vector operator *(const vector& a,double p);

vector operator /(const vector& a,double p);

double length(const vector& a);//向量的模

double angle (const vector& a,const vector& b);//兩向量夾角,弧度表示

point getlineintrersection(point p,vector v,point q,vector w);//直線交點

double distancetoline(point p,point a,point b);//點到直線距離

double distancetosegment(point p,point a,point b);//點到線段距離

double distancemaxtosegment(point p,point a,point b);//點到線段最遠距離

//線段是否「正規相交」,即交點不在四個端點上

bool segmentproperintersection(point a1,point a2,point b1,point b2);

cpp檔案:

#include "geometry.h"

#include

#include

#include

using namespace std;

point::point(double x,double y)

//向量與向量的+ - 點積 叉積

vector operator +(const vector& a,const vector& b)

vector operator -(const vector& a,const vector& b)

double dot(const vector& a,const vector& b)

double cross(const vector& a,const vector& b)

//向量間關係運算子

bool operator < (const vector& a,const vector& b)

double distancemaxtosegment(point p,point a,point b)

//線段是否「正規相交」,即交點不在四個端點上

bool segmentproperintersection(point a1,point a2,point b1,point b2)

return dcmp(cross(a1-p,a2-p))==0&&dcmp(dot(a1-p,a2-p))<0;

}

acm比賽中的單檔案:

#include 

#include

#include

#include

using namespace std;

struct point;

typedef point vector;

point::point(double x,double y)

//向量與向量的+ - 點積 叉積

vector operator +(const vector& a,const vector& b)

vector operator -(const vector& a,const vector& b)

double dot(const vector& a,const vector& b)

double cross(const vector& a,const vector& b)

//向量間關係運算子

bool operator < (const vector& a,const vector& b){

if(a.x

計算幾何與計算幾何與

博主這裡曾經學過計算幾何 下文簡稱jj 所以沒有證明或者說明某些演算法,不適合初學者食用 用一道例題及黃學長的 來理解 黃學長 include include include include include include include include include include define...

計算幾何 幾何基礎

這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...

caioj 計算幾何 面積 計算幾何 叉積

題意 在乙個平面座標系上隨意畫一條有n個點的封閉折線 按畫線的順序給出點的座標 保證封閉折線的任意兩條邊都不相交。最後要計算這條路線包圍的面積。用叉積有關知識解決。重要結論 abs 三點的叉積 2為這三點圍成的三角形的面積。簡要證明 上圖中,黑色的三角形面積為矩形 三個三角形,設數,計算,合併同類項...