設(shè)空間線段的起點A和終點B分別為、
,線段AB外一點C(a,b,c),則C點到線段AB的垂點D的坐標(biāo)求解過程如下:
因垂點D在線段AB上,則有向量關(guān)系,由向量仿射知D點坐標(biāo)可表示為
[式1]。
因,則有
整理得:
求出k后,由[式1]可求出D點坐標(biāo)。
當(dāng)時,垂點D在線段AB上,否則在線段AB外。
C++代碼如下:
#include "stdafx.h"
class CPoint
{
public:
CPoint()
{
x = 0;
y = 0;
z = 0;
}
CPoint(double _x, double _y, double _z)
{
x = _x;
y = _y;
z = _z;
}
inline void operator = (const CPoint& p)
{
x = p.x;
y = p.y;
z = p.z;
}
static CPoint getPerpendicularPoint(CPoint start, CPoint end, CPoint pt, double& u)
{
CPoint ret;
double dx = end.x - start.x;
double dy = end.y - start.y;
double dz = end.z - start.z;
double k = (end.x - start.x)*(pt.x - start.x) + (end.y - start.y)*(pt.y - start.y) + (end.z - start.z)*(pt.z - start.z);
k = k / (dx*dx + dy*dy + dz*dz);
u = k;
return CPoint(start.x + k*dx, start.y + k*dy, start.z + k*dz);
}
public:
double x;
double y;
double z;
};
int _tmain(int argc, _TCHAR* argv[])
{
double u;
CPoint x1 = CPoint::getPerpendicularPoint(CPoint(0, 0, 0), CPoint(0,0, 100),CPoint(30,20,30),u);
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱:求空間點到指定線段的垂點坐標(biāo)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article34/peese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站排名、Google、商城網(wǎng)站、定制網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容