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 Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 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
將60進位的座標正確顯示如下?
=======================================================
沒有留言:
張貼留言