計算幾何 點到直線的距離 投影點

2021-09-22 12:50:57 字數 1799 閱讀 1291

彙總篇:計算幾何彙總

求ad有很多種方法,可以用勾股定理

這裡用的三角函式

x=acos(cos(x))

|ad|=|ba|*sin(x)

如果x是鈍角,|ad|=|ba|*sin(pi-x)=|ba|*sin(x)

如果是直角,sin(x) = 1,|ad|=|ba|

設d(dx,dy)

ad=(dx-ax,dy-ay)

bc=(c.x-b.x,c.y-b.y)

|ba|=sqrt((bx-ax)^2+(by-ay)^2)

ad*bc=0,(dx-ax)*(cx-bx)+(dy-ay)*(cy-by)=0

|ad|=sqrt((dx-ax)^2+(dy-ay)^2)= |ba|*sin(x)

解上述方程組可解得dx,dy

babc上的投影等於ba乘以bc的方向向量

d = b +bd

#includeclass point 

friend const point operator+(const point& p1,const point& p2);

friend const point operator-(const point& p1,const point& p2);

friend const point operator*(const point& p,const double& m);

friend const point operator*(const double& m,const point& p);

friend const point operator/(const point& p,const double& m);

friend ostream& operator <

};typedef point vect2;//重新命名,向量也是用座標表示

class line

};double dot(point o,point a,point b)

double dis(const point &p1,const point &p2)

double dis2(const point &p1,const point &p2)

//點到直線的距離

double disofpointtoline(point o,line l)

//點在直線上的投影

point shadowpointofpointtoline(point a,line l)

Unity立體幾何 點到直線距離計算

unity是一款3d引擎,設計一款3d遊戲時,經常會涉及到3d的運算,比如兩點之間的距離,向量的一些操作等。unity已經封裝好了一些常用函式在vector3和plane類中,如兩點之間的距離,向量之間的夾角,向量的投影計算等。這裡說一下的是點到直線的距離,根據投影及勾股定理計算。點到直線距離 點座...

Unity立體幾何 點到直線距離計算

unity是一款3d引擎,設計一款3d遊戲時,經常會涉及到3d的運算,比如兩點之間的距離,向量的一些操作等。unity已經封裝好了一些常用函式在vector3和plane類中,如兩點之間的距離,向量之間的夾角,向量的投影計算等。這裡說一下的是點到直線的距離,根據投影及勾股定理計算。點到直線距離 點座...

計算空間點到直線的距離

利用向量的叉積計算空間點到直線的距離,eigen庫已經給我封裝好了只需按著要求呼叫就好了。舉個簡單的例子如下 已知空間直線的方向向量表示為 m,n,p 已知直線上一點座標為b x0,y0,z0 求解空間點a x,y,z b到直線的距離d 需要構建兩個向量 eigen vector4d vec1 m,...