正交投影線
回答
你想P的正投影(由P2和P3中給出的線)是段[P2,P3]內。在數學上,它只是寫(我注意到VECT(A,B)向量AB,因爲我不知道怎麼用箭頭表示):
0 <= vect(P2, P) . vect (P2, P3) <= vect(P2, P3) . vect(P2, P3)
你的確可以使用std::inner_product
但如果你點事情就這麼簡單:
struct Point {
double x;
double y;
};
你可以只使用
double operator - (const Point& a, const Point& b) {
return a.x - b.x + a.y - b.y;
}
double operator * (const Point& a, const Point& b) {
return a.x * b.x + a.y * b.y;
}
而數學公式只是給:
bool is_proj_inside(const Point& P, const Point& P2, const Point& P3) {
double p_proj = (P - P2) * (P3 - P2);
double p3_proj = (P3 - P2) * (P3 - P2);
return (p_proj >= 0) && (p_proj <= p3_proj);
}
第二個檢查'(p_proj <= p3_proj)'只是檢查點P'是否在P3的左邊? – DaynaJuliana
@DaynaJuliana:這就是我從數學觀點開始的原因。 p_proj> = 0表示它在P2之後(在面向P2-> P3的行中)並且p_proj <= p3_proj表示它在P3之前。 BTW p3_proj> = 0是有保證的,因爲它是一個平方積。 –
這個概念是你將P投影到S上,然後檢查投影P'是否在P2和P3之間。
爲了讓它更容易一點,你說P2是S的支持向量,P3-P2是方向向量。然後,您將P-P2投影到規格化的P3-P2(您計算它們之間的標量積),它將P'與P2的距離D給出。 現在你只需要知道P'是否在P2和P3之間。那如果d是肯定的,你可以用0和1之間
謝謝!首先,我會不會使P-P2正常化? – DaynaJuliana
好問題。不,你不會,因爲P到P2的距離對P'沒有影響,但它應該。 –
inner_product(積)取的結果很簡單的方法是正確的。
使載體
V2 = P - P2
V3 = P - P3
V = P3 - P2
找到的點積跡象 D2 = Dot(V2,V)
和D3 = Dot(V3,V)
點P的投影在於在S(P2,P3),如果
D2 >=0 and
D3 <=0
注 - 不需要歸一化,平方根等。只需要一些減法,乘法和加法。
(解 - 角P-P2-P3
和P-P3-P2
應該是急性的或右)
似乎這兩個答案是不一致的。這與其他答案有何不同?也不是V需要規範化嗎? – DaynaJuliana
我們只比較標誌,所以不需要標準化。兩個答案並不矛盾 - 他們只是提出了不同的方法(有很多方法可以解決這個問題) – MBo
- 1. GLSL正交投影
- 2. 正交投影與numpy
- 3. openGL - 正交投影矩陣
- 4. 正交相機的投影矩陣
- 5. OpenGL正交,透視和截錐投影
- 6. 在飛機上的3D正交投影
- 7. OpenGL:正投影
- 8. 正投影Python
- 9. 三維正投影
- 10. 正投影在OpenGL
- 11. 正確設置正投影?
- 12. 瞭解three.js射線投影
- 13. 線性投影庫C#
- 14. 正交投影,在OpenGL 2.0中繪製正方形
- 15. D3 + Three.js:格線投影 - 無法將投影應用於刻度
- 16. OpenGL 3.0+:正投影矩陣
- 17. OpenGL的正投影剪輯
- 18. 鏡頭校正投影
- 19. D3.js解析錯誤 - 正交地圖投影的旋轉
- 20. Opengl-es 2.0中的正交投影矩陣
- 21. 爲什麼我的正交投影矩陣不起作用?
- 22. XNA:與屏幕座標匹配的正交投影
- 23. 如何使用正交投影法從csv旋轉點d3
- 24. opengl中的正交投影和紋理座標
- 25. 問題與改變正交投影矩陣
- 26. 使用現代OpenGL進行2D渲染的正交投影
- 27. XNA中的透視/正交投影轉換?
- 28. OpenGL:爲什麼在正交投影中遠近都是負值?
- 29. 設置的正交俯視圖投影在WebGL的
- 30. 帶限制的投影。交換接口
什麼是完整的問題? Inner_product是dot產品的另一個名稱,但您是否需要在此使用取決於問題。 – sashang
@sashang謝謝!我以爲他們有點不同,我想知道如何使用這個給定的結構與點x和y,而不是一個向量 – DaynaJuliana