/// 実習G5 座標計算 | プログラミング実習 |
プロジェクト名 実習G5マス目番号の計算3
動作説明
クリックしたマス目の番号を表示する。その前に、角度だけを表示する。
デザイン
フォーム Form1
Size = 316,297 (枠内300×260)
BackgroundImage = BackImage4.gif
ラベル lblMasu
Text = マス目番号
BackImage4の円
中心座標(150,130)、 半径=125
コード(プログラム)
Public Class Form1
Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Handles Me.MouseClick
Dim x0 As Integer = 150, y0 As Integer = 130 '円の中心
Dim rr, num As Integer '半径rr, マス目番号num
Dim xx, yy As Integer 'クリックした座標(補正済み)
Dim kaku As Double '角度
xx = @ - x0
yy = A - y0
rr = CInt(Math.Sqrt(xx ^ 2 + yy ^ 2)) '半径計算
If B Then
lblMasu.Text = "マス目番号=範囲外です"
Else
kaku = Math.Atan(yy / xx) * 180.0 / Math.PI
lblMasu.Text = "マス目番号= " & kaku.ToString
End If
End Sub
End Class
キーワード
Math.Atan … アークタンジェントの値を求める。x,yの値から角度θを求める。
→ 。求めた角度θの単位はラジアンであるから 倍して度に変換している。-90〜90度の範囲の角度が表示される。
Math.PI … 円周率πを表す。
解説
それぞれのマスは中心角45度の円弧でできている。クリックした座標から角度を求めるアークタンジェントを利用する。
テスト
□ マス目の境目(図の0a,0bなどの場所)をクリックすると角度が表示される。
表示される角度の整数部を記録せよ。
0a( )度、0b( )度、1a( )度、1b( )度
2a( )度、2b( )度、3a( )度、3b( )度
4a( )度、4b( )度、5a( )度、5b( )度
6a( )度、6b( )度、7a( )度、7b( )度
G5の2
動作説明
クリックしたマス目の番号を表示する。
デザイン 変更なし
コード(プログラム) 太字が追加・修正部分。
Public Class Form1
Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Handles Me.MouseClick
Dim x0 As Integer = 150, y0 As Integer = 130 '円の中心
Dim rr, num As Integer '半径rr, マス目番号num
Dim xx, yy As Integer 'クリックした座標
Dim kaku As Double '角度
xx = e.X - x0
yy = e.Y - y0
rr = CInt(Math.Sqrt(xx ^ 2 + yy ^ 2)) '半径計算
If rr > 125 Then
lblMasu.Text = "マス目番号=範囲外です"
Else
kaku = Math.Atan(yy / xx) * 180.0 / Math.PI
kaku = Math.Abs(kaku)
If xx >= 0 And yy < 0 Then '+-
num = Int(kaku / 45.0)
ElseIf xx < 0 And yy <= 0 Then '--
num = @
ElseIf xx <= 0 And yy > 0 Then '-+
num = A
ElseIf xx > 0 And yy >= 0 Then '++
num = 7 - Int(kaku / 45.0)
End If
lblMasu.Text = "マス目番号= " & num.ToString
End If
End Sub
End Class
キーワード
Math.Abs … 絶対値を求める。
解説
実習G5の1で各マス目の角度の範囲が図のようであったことを確認した。
角度は、絶対値を計算して、負の値はなくしている。角度は45度単位なので、45で割った商は0か1になる。これとクリックした座標の正負を調べてマス目番号を計算している。
テスト
□ フォームをクリックするとクリックしたマス目の番号が表示される。
□ マス目以外の場所をクリックすると「範囲外です」と表示される。
/// 実習G5 座標計算 | Copyright©2014 Hiroshi Masuda |