平面用垂線(法線) 表示
根據(jù) y=vt+a
推出 L(t) = (1,4,-2)·t+ (2,-4,3)
templateclass Plane
{Vector3f normal;
float d = 0.0;
public:
Plane(){};
Plane(Vector3f &_normal, float _constant)
: normal(_normal), d(_constant)
{}
Plane(Point3d &_p1, Point3d &_p2, Point3d &_p3)
{Vector3f v12 = _p2 - p1;
Vector3f v13 = _p3 - p1;
normal = crossProduct3D(v12, v13);
d = dotProduct(normal, _p1);
}
};
線與平面的交點(diǎn)bool Intersection(const Line3d& line, const Planef& plane, Point3d& point)
{auto n = plane.getNormal();
auto D = plane.getD();
auto d = line.getDir();
auto p = line.getPoint();
auto nd = dotProduct(n, d);
if (!isEqualDouble(nd, ZERO))
{auto t = (-1 * dotProduct(n, p) + D) / nd;
point.assign(X, p[X] + t * d[X]);
point.assign(Y, p[Y] + t * d[Y]);
point.assign(Z, p[Z] + t * d[Z]);
return true;
}
else
return false;
return false;
}
兩個(gè)平面相交
n為(A,B,C)->法向量,P(x1,y1,z1)這是兩平面相交線中任意一點(diǎn)。
那么通式可以表示為R=a·n1+b·n2
bool Intersection(const Planef& p1, const Planef& p2, Line3d& l)
{auto n1 = p1.getNormal();
auto n2 = p2.getNormal();
auto d1 = p1.getD();
auto d2 = p2.getD();
auto direction = crossProduct3D(n1, n2);
if (isEqualDouble(direction.magnitude(), ZERO))
return false;
auto n1n2 = dotProduct(n1, n2);
auto n1n2_2 = n1n2 * n1n2;
auto a = (d2 * n1n2 - d1) / (n1n2_2 - 1);
auto b = (d1 * n1n2 - d2) / (n1n2_2 - 1);
auto point = n1 * a + n2 * b;
l.setPoint(point);
direction.normalize();
l.setDirection(direction);
return true;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:平面c++實(shí)現(xiàn)-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article2/dijjoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容