2017年12月10日 星期日

CH10 上課資料

上課PPT + PDF + prg


https://www.mediafire.com/file/84pis1dt67tp241/ch10.rar

https://www.mediafire.com/file/84pis1dt67tp241/ch10.rar


課後練習

mail 至 alex9ufo@gmail.com 用雲端分享連結方式

自訂函式+程序

設定座標(校園地圖)

學校園週邊地圖(複製自Google Earth, <<下載>>)
地圖左上角10進制座標: 東經 121.77066  /  北緯 25.15373
地圖左上角60進制座標: 東經 121度46分14.376秒  /  北緯 25度09分13.428秒
地圖右下角10進制座標: 東經 121.78237  /  北緯 25.14711
地圖左上角60進制座標: 東經 121度46分56.532秒  /  北緯 25度08分49.596秒

Public Class Form1
 Private Sub PictureBox1_MouseMove(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles  PictureBox1.MouseMove
  Label1.Text = "(" + Str(e.X) + "," + Str(e.Y) + ")"
 End Sub
End Class

在PictureBox1的MouseMove事件中顯示游標的座標訊息如下:
此座標為PictureBox1的原始座標,必須進行坐標平移與尺度轉換

座標轉換之步驟包含以下:


轉換函數公式如下:

1. 將游標XY座標分別換算為地圖10進位經緯座標如下
Function Degx(Byval x as single)
  Degx=121.77066+x*(121.78237-121.77066)/843
End Function
 
Function Degy(Byval y as single)
  Degy=25.14711+(520-y)*(25.15373-25.14711)/520
End Fuction
 
2. 將10進位座標轉換為60進位座標如下
Function DMS( ByVal x as single) as string     '將10進制轉為60進制
    dim d, m, s
    d = x \ 1         '取度
    m = (x - d) * 60 \ 1  '算分
    s =  ((x- d) * 60 - m) * 60  '算秒
    DMS = str(d) & "度" & str(m) & "分" & str(s) & "秒"
End Sub
 
如何改寫原程式碼 Label1.Text = "(" + Str(e.X) + "," + Str(e.Y) + ")"
將60進位的座標正確顯示如下?




=======================================================





 

沒有留言:

張貼留言

WOKWI LED + MQTT Node-Red SQLite

WOKWI LED + MQTT Node-Red SQLite const char *mqtt_broker = "broker.mqtt-dashboard.com" ; const char *topic1 = "alex9ufo/e...