簡體   English   中英

查找給定x,y,z坐標的方向

[英]Find direction of given x,y,z cordinates

我是opencv的新手,而且正在不斷發展。 我有x,y,z坐標(0.00949334694383068,-0.3999829847985352,0.8449078780010854)通過使用給定的坐標我怎么能找到方向。

for an example 
input one : x,y,z =  0.00949334694383068, -0.3999829847985352, 0.8449078780010854
input two : x,y,z =   0.01603883281370779, 0.6066595296580494, 0.5342810849038371

最后,我想比較input_one方向和input_two方向。 任何幫助表示贊賞

您要嘗試做的就是計算方位角。 如果您有興趣出於導航或地理目的而執行此操作,並且需要對此有透徹的了解,則可以從此處開始:

http://mobile.codeguru.com/cpp/cpp/algorithms/article.php/c5115/Geographic-Distance-and-Azimuth-Calculations.htm

否則,您可能會尋找一個庫來計算基於3d坐標的方位角

這稱為向量數學。

相對於某些原點(在您的情況下x=0,y=0,z=0x=0,y=0,z=0 “坐標”是一種特殊的向量。 出於這個原因,所不同的x1-x2, y1-y2, z1-z2點2 到點 1.逆矢量x2-x1, y2-y1, z2-z1點1 點2的載體。

向量的方向通常是通過忽略其長度或將其長度設置為1來定義的。 因此,我們需要首先定義長度,即L = √(x*x + y*y + z*z) 我們可以定義向量x/L, y/L, z/L ,其指向與x,y,z相同的方向x,y,z但長度為1。

最后,為了比較兩個方向,我們可以計算這兩個方向的內積x1/L1 * x2/L2 + y1/L1 * y2/L2 + z1/L1 * z2/L2 如果那是一個,則它們指向相同的方向。 如果為0,則它​​們是正交的。 如果為-1,則它們指向相反的方向。

如您所見,向量0,0,0的長度為0,沒有方向。 這會使事情復雜化。

在OpenCV中: Vec類 長度函數稱為norm(v) ,內部乘積稱為v1.mul(v2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM