簡體   English   中英

從一個點以一定的角度和一定的距離查找點python

[英]Finding points from one point with certain angle and certain distance python

我想在圖片下方找到紅點數。 使用蟒蛇。 我怎樣才能做到這一點? 使用給定的角度和距離根據地標..

每個點都有坐標(緯度,經度)。 地標也有坐標。

例如,您可以使用 85 度角,它的波束寬度可以采用 50 度角。

給定區域有很多紅點。 我有一些限制(角度和距離)。 如何數紅點?

BR,

在此處輸入圖像描述

你的問題比較模糊,所以我暫時假設這是一個圓圈。

好吧,使用一些數學,我們可以計算出如何根據 x 和 y 坐標獲得距離 d 和角度 theta 坐標。

我們知道:

x^2 + y^2 = d^2

tan(theta) = y/x

對於這背后的實際數學,您可以繪制一個直角三角形,其角度為 theta,斜邊長度為 d,水平長度為 x,垂直長度為 y。

求解thetad

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.

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