設空間線段的起點A和終點B分別為、,線段AB外一點C(a,b,c),則C點到線段AB的垂點D的坐標求解過程如下:
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比龍山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式龍山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋龍山地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。因垂點D在線段AB上,則有向量關系,由向量仿射知D點坐標可表示為[式1]。
因,則有
整理得:
求出k后,由[式1]可求出D點坐標。
當時,垂點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)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
標題名稱:求空間點到指定線段的垂點坐標-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://jinyejixie.com/article34/peese.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、網(wǎng)站排名、Google、商城網(wǎng)站、定制網(wǎng)站、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容