HAMIchin仮面の土木・測量教室   Room 711  12回 


    Hokokaku() の中身 続き2

 


  Hokokaku() 関数の構造。

       Select Case 〜 End Select の話 なぜ分岐が必要か?






















































図12-1



  Hokokaku(dX,dY) の 正しい書式は (図12-1)です。 前回11回目 で説明しました 

  dX の 条件は 赤い文字で 表示しています。 

      dX>0、 dX=0、 dX<0 の 3個の条件です。 
 
   さらに dY の条件が加わります。 青い文字で表示しています。

      dY>0、 dY=0、 dY<0 の 3個の条件です。 

  dX が 3個の条件 dYが3個の条件 で 組み合わせは9種類になります。

   Hokokaku(dX,dY)の中身は dX、dY、 の条件に基づいて 

   それぞれ9種類の仕事を振り分けています。 振り分けの仕事を受け持っているのが

   Select Case 〜 End Select です。 

  dX がそれぞれの条件で分岐した後 dY の条件に従って もう一度 分岐して 

  目的の条件にたどり着いています。 

  このような 条件の中にさらに条件を入れ込む条件分岐を 「ネスト」 と呼んでいます。



 
  Function Hokokaku(dX, dY) As Double の内容


  Function Hokokaku(dX, dY) As Double

    Select Case dX
      Case Is > 0

         Select Case dY
           Case Is > 0
              Hokokaku = Atn(dY / dX)
           Case Is = 0
              Hokokaku = 0
           Case Is < 0
              Hokokaku = 2 * pi + Atn(dY / dX)
           End Select

      Case Is = 0

         Select Case dY
           Case Is > 0
              Hokokaku = 1 / 2 * pi
           Case Is = 0
              Hokokaku = 0
           Case Is < 0
              Hokokaku = 3 / 2 * pi
           End Select

      Case Is < 0

        Select Case dY
          Case Is > 0
             Hokokaku = pi + Atn(dY / dX)
          Case Is = 0
             Hokokaku = pi
          Case Is < 0
             Hokokaku = pi + Atn(dY / dX)
          End Select

     End Select

  End Function









図12-2
































  





  (図12-1)の条件分岐を R=1の単位円を使って表にまとめました。

  測量を基準に考えていますので。 北方向 すなわち X軸の正の方向 が角度0°です。

  時計回り(右回り) で 0°〜360°まで 45°刻みで表示してあります。


  dX、dYはそれぞれの角度の時の X軸、Y軸 の数値です。 正、負の記号に注意してください。

  条件は 数値がどの条件にあるかを示しています。この条件が Select Caseに当てはまります。

  9種類の条件組み合わせになっています。


  dY/dX は 角度を求めるときの計算式です。 前回説明したのは 条件によって

  ゼロで割る エラーが発生することでした 表では 「#DIV/0」 ゼロでわり算したよ と警告が

  でています。 これはエクセルの表現です エクセルでは このように 警告だけですみますが

  プログラムでは 計算を中止してしまいます。


  dY/dXの列に もう一つ重要なことが 含まれています。 

  dY/dXの結果が 0、 1, -1、 #DIV/0 の4種類しかありません。

  条件が9種類あるのに 答えが4種類では 単純に dY/dXの式では 

  正しい答えを求めることができません。


  Function Hokokaku(dX, dY) As Double 方向角を求める プログラムの真の目的は

     dX,dYの条件によって 9種類に分類して それぞれの条件にあった 

     答えの方程式に 当てはめて 答えを引き出すことにあります。

  このためのにSelect Case 〜 End Select を使って ネストを繰り返していたのです。

  一連の流れを (図12-3)で示しています。



図12-3   


     9種類の条件にそれぞれの答えを割り当てる詳細を説明するには 

     アークタンジェントとラジアンの計算の関係など少々込み入った話になりますので

     次回に回します。 

     自分で確かめて見たい方は(図12-1)をじっくり見てください。

     何となく解ってくると思います。

     がんばってチャレンジしてみてはいかがでしょうか。





  エクセルのファイル 「座標計算シート」 (有料) を用意しました。 
(図5-3)

  このファイルで ToraX、 ToraY 関数のマクロが完全に表示されます。

      トラバー計算、逆トラバー計算を一つの画面で処理する標準フォーム

      標準フォームページを即、使うための解説

      VBA による 座標関連関数 のリソース(プログラム)の公開 

     ● Hokokaku(dX, dY)の完全な動作, と記述を含みます。 

      リソースの解説のための計算例

      プログラム作成のための補足説明

                      が含まれています。

   この講座は 順次回を重ねていくと 最終的には 「座標計算シート」が出来上がります。

   前もって 「座標計算シート」を手元に置かれて 参考にしながら 実際に作動させて
     確認していただくと よりいっそう理解しやすいです。

   また、本講座と 「座標計算シート」があれば 本格的な、座標計算やVBAの教材としても
     十分に活用できるものと考えております。


     テキストファイル入手方法は下欄でお確かめ下さい。




    ”エクセル” ファイル 「座標計算シート」 申し込み方法

      ファイル代金 ¥2,000円 を下記の銀行に振り込んで下さい。

   恐れいりますが、 メールにて

        ファイルの送り先のメールアドレス

        あなたの名前 (お名前がわからないと振込みの確認ができません)

                   以上をお知らせください。

    確認ができしだい メールにてファイルを送らせていただきます。
    もし、1週間経ってもファイルが届かない場合、お叱りのメールを下さい。直ちに対処いたします。

     連絡先メール   mt7116@mandala.ne.jp

     振込み先

         阿波銀行山川支店(店番号406)
         普通預金
         口座番号  1034509
         永井 俊   (ナガイ タカシ)

         ファイル代金 ¥2,000円



   back to  room 711 top     goto e-school top