空間點到直線垂足座標的解算及C 實現

2022-03-16 09:16:20 字數 1912 閱讀 7333

**:

假設空間某點o的座標為(xo,yo,zo),空間某條直線上兩點a和b的座標為:(x1,y1,z1),(x2,y2,z2),設點o在直線ab上的垂足為點n,座標為(xn,yn,zn)。點n座標解算過程如下:

首先求出下列向量:

向量ab可以用方向向量代替

由向量垂直關係:

上式記為(1)式。

點n在直線ab上,根據向量共線:

(2)由(2)得:

(4)把(4)式代入(3)式即得到垂足n的座標。12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

29// 二維空間點到直線的垂足

struct

point

point getfootofperpendicular(

const

point &pt,     // 直線外一點

const

point &begin,  // 直線開始點

const

point &end)   // 直線結束點

double

u = (pt.x - begin.x)*(begin.x - end.x) +

(pt.y - begin.y)*(begin.y - end.y);

u = u/((dx*dx)+(dy*dy));

retval.x = begin.x + u*dx;

retval.y = begin.y + u*dy;

return

retval;}1

2345

6789

1011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

// 三維空間點到直線的垂足

struct

point

point getfootofperpendicular(

const

point &pt,     // 直線外一點

const

point &begin,  // 直線開始點

const

point &end)   // 直線結束點

double

u = (pt.x - begin.x)*(begin.x - end.x) +

(pt.y - begin.y)*(begin.y - end.y) + (pt.z - begin.z)*(begin.z - end.z);

u = u/((dx*dx)+(dy*dy)+(dz*dz));

retval.x = begin.x + u*dx;

retval.y = begin.y + u*dy;

retval.y = begin.z + u*dz;

return

retval;

}

空間點到直線垂足座標的解算方法

假設空間某點o的座標為 xo,yo,zo 空間某條直線上兩點a和b的座標為 x1,y1,z1 x2,y2,z2 設點o在直線ab上的垂足為點n,座標為 xn,yn,zn 點n座標解算過程如下 二維空間點到直線的垂足 struct point point getfootofperpendicular ...

點到直線方程的距離 垂足 對稱點

已知點的座標 x0,y0 直線的方程為ax by c 0 求點到直線上的距離d 點在直線上的垂足 x,y 點關於直線的對稱點 x y 解決方法 1 距離 d ax0 by0 c sqrt a a b b 這個 距離 有符號,表示點在直線的上方或者下方,取絕對值表示歐式距離。2 垂足 求解兩個方程 a...

計算空間點到直線的距離

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