[英]Finding points from one point with certain angle and certain distance python
你的問題比較模糊,所以我暫時假設這是一個圓圈。
好吧,使用一些數學,我們可以計算出如何根據 x 和 y 坐標獲得距離 d 和角度 theta 坐標。
我們知道:
x^2 + y^2 = d^2
tan(theta) = y/x
對於這背后的實際數學,您可以繪制一個直角三角形,其角度為 theta,斜邊長度為 d,水平長度為 x,垂直長度為 y。
求解theta
和d
:
d = sqrt(x^2 + y^2)
theta = arctan(y/x)
我們的算法將獲取一個元組列表(表示點),並查看每個點的角度是否在一定范圍內。 此外,我們將檢查每個點的距離是否小於我們的限制。 如果滿足這兩個條件,那么我們將增加我們的總數。
現在我們知道如何根據距離和角度找到我們的坐標,我們可以輕松地制作我們的函數:
import math
def countPoints(maxDist, angle1, angle2, points):
tot = 0
for (x,y) in points:
theta = math.atan(y/x)
dist = math.sqrt(x ** 2 + y ** 2)
if theta > angle1 and theta < angle2:
if dist < maxDist:
tot += 1
return tot
樣本:
points = [(1,1),(2,3),(3,5),(4,6)]
print(countPoints(4,0,1.2,points))
輸出:
2
前兩點的角度在 0 到 1.2 弧度之間,距離小於 4。
注意:對於這個函數,我們假設angle1 < angle2
,並且如果angle1
低於水平軸,它將是負數。 如果您的輸入的angle1
為正,但低於水平軸,則只需將其乘以-1
,然后再將其輸入函數。
我希望這有幫助! 如果您需要任何進一步的幫助或澄清,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.