/// 実習G5 座標計算 プログラミング実習 目次に戻る
 back next 

プロジェクト名  実習G5マス目番号の計算3

動作説明

 クリックしたマス目の番号を表示する。その前に、角度だけを表示する。

デザイン

実習G5のデザイン フォーム 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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A   B
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

キーワード

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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

キーワード

Math.Abs … 絶対値を求める。

解説

解説用の図 実習G5の1で各マス目の角度の範囲が図のようであったことを確認した。
 角度は、絶対値を計算して、負の値はなくしている。角度は45度単位なので、45で割った商は0か1になる。これとクリックした座標の正負を調べてマス目番号を計算している。

テスト

□ フォームをクリックするとクリックしたマス目の番号が表示される。
□ マス目以外の場所をクリックすると「範囲外です」と表示される。


 back next 
/// 実習G5 座標計算 Copyright©2014 Hiroshi Masuda 

 

 

 

inserted by FC2 system