python中,根據座標點位置求方位角

2021-10-25 08:54:46 字數 3445 閱讀 2276

話不多說,直接上**:

from pyqt5.qtgui import

*from pyqt5.qtwidgets import

*from pyqt5.qtcore import qt

import sys

import math

class

example

(qwidget)

:def

__init__

(self)

:super()

.__init__(

) self.initui(

)def

initui

(self)

: self.resize(

500,

250)

self.setwindowtitle(

"座標系"

) self.lb = qlabel(

"點1到原點距離:"

, self)

self.lb.move(20,

40)self.lb2 = qlabel(

"點1與原點的角度:"

, self)

self.lb2.move(20,

80)self.lb3 = qlabel(

"點2到原點距離:"

, self)

self.lb3.move(20,

120)

self.lb4 = qlabel(

"點2與原點的角度:"

, self)

self.lb4.move(20,

160)

self.bt1 = qpushbutton(

'查詢'

, self)

self.bt1.move(20,

200)

self.edit = qlineedit(

'', self)

self.edit.move(

150,40)

self.edit2 = qlineedit(

'', self)

self.edit2.move(

150,80)

self.edit3 = qlineedit(

'', self)

self.edit3.move(

150,

120)

self.edit4 = qlineedit(

'', self)

self.edit4.move(

150,

160)

self.bt1.clicked.connect(self.calc_angle)

self.show(

)def

calc_angle

(self)

: x1 =

float

(self.edit.text())

* math.cos(math.radians(

int(self.edit2.text())

))y1 =

float

(self.edit.text())

* math.sin(math.radians(

int(self.edit2.text())

))x2 =

float

(self.edit3.text())

* math.cos(math.radians(

int(self.edit4.text())

))y2 =

float

(self.edit3.text())

* math.sin(math.radians(

int(self.edit4.text())

))angle =

0 dy = y2 - y1

dx = x2 - x1

if dx ==

0and dy >0:

angle =

90print

('順時針:'

, angle,

'°')

if dx ==

0and dy <0:

angle =

270print

('順時針:'

, angle,

'°')

if dy ==

0and dx >0:

angle =

0print

('順時針:'

, angle,

'°')

if dy ==

0and dx <0:

angle =

180print

('順時針:'

, angle,

'°')

if dx >

0and dy >0:

angle = math.atan(dy / dx)

*180

/ math.pi

print

('東偏北:'

,angle,

'°')

elif dx <

0and dy >0:

angle =

90- math.atan(dy /

abs(dx))*

180/ math.pi

print

('北偏西:'

, angle,

'°')

elif dx <

0and dy <0:

angle = math.atan(dy / dx)

*180

/ math.pi

print

('西偏南:'

, angle,

'°')

elif dx >

0and dy <0:

angle = math.atan(

abs(dy)

/ dx)

*180

/ math.pi

print

('東偏南:'

, angle,

'°')

length = math.sqrt(dy * dy + dx * dx)

print

(length)

if __name__ ==

'__main__'

: ex = example())

)

最後的結果之所以有那麼多小數點,是因為math.pi,其實就是π,3.1415926…,有很多小數字!

其實上文就是,在乙個座標系中,已知兩個點到座標原點的距離,以及它們和橫軸的角度(這都是需要自己手動輸入的),那麼就以第乙個點為此時的座標原點,求第二個點到第乙個點的距離,以及第二點在第一點的相關方位。

ps: 我這裡是已知兩點到原點的距離和角度,就像在乙個極座標裡一樣,如果直接知道兩點的橫縱座標,那麼會更好求。

根據座標點位置計算方位角(python實現)

根據座標點位置計算方位角是在gps軌跡處理和資料探勘中很常見的得到車頭朝向的方式。網上的大部分 都有些許錯誤,這裡總結如下。x1,y1 為當前gps點座標,x2,y2 為下乙個點的gps座標 def calc angle x1,y1,x2,y2 angle 0 dy y2 y1 dx x2 x1 i...

google map 根據座標點自動縮放

google map v3的命令和v2有些差別。下面把我的 貼出來。這個功能主要是如果乙個地圖上有多個座標,可以根據座標點自動計算zoom值,防止有點座標點跑到地圖外面,導致顯示不全。planservice.initmap function id,flightplancoordinates,area...

Android 根據座標點動態改變View的位置

在開發專案中,需要動態改變view的位置,其實只需要用api的 layout 方法即可,不斷改變座標值,通過ontouchevent 來獲取點的座標點,然後計算出view的寬和高就可以了 如下 private relativelayout main area 需要移動的view private vo...