目次

オブジェクト定義

 シミュレータの画面を見て、必要なオブジェクトを抽出します。




文字列表示

 左上から眺めると、文字列(Top、Left、Right)を表示  しているので、ラベルを定義して文字列を表示します。  右上を見ると、文字列(X=、Y=)を表示しているので  ラベルを定義して文字列を表示。  計算結果、角度、方向は、文字列なので、ラベルで表示指定。  Tcl/Tkでは、ラベル定義には、コマンドlabelを使います。  Top、Left、Rightを定義すると、以下。 label .lblTop -text "Top" label .lblLeft -text "Left" label .lblRight -text "Right"  表示したい文字列を、「-text」の右に""で  囲んで記述すれば、それでOKです。  同じように、X=、Y=を定義。  label .lblXcmp -text "X = "  label .lblYcmp -text "Y = "  計算結果、角度、方向は、SETボタンクリックで変るので  文字列を格納する変数名だけを指定します。  label .lblXcmpV -textvariable xcmp  label .lblYcmpV -textvariable ycmp  label .lblAngle -textvariable ang  label .lblDir -textvariable dir  文字列を格納する変数は、予め定義する必要はありません。  必要になったときに、定義して値を格納しておけばよいのが  長所です。  ただし、この場合は、起動したときには何も入っていない  はずなので、変数に0か空文字列を格納。  set xcmp 0  set ycmp 0  set ang 0  set dir ""

文字列、数値入力

 Top、Left、Rightの3数値を入力します。  Tcl/Tkでは、数値も文字列とみなして、1行入力するには  コマンドentryを利用。  Top、Left、Rightの各文字列を入力すると考え  次のように定義します。  entry .edtTop -textvariable topPWM -width 6  entry .edtLeft -textvariable leftPWM -width 6  entry .edtRight -textvariable rightPWM -width 6  ラベル定義と同じに、文字列格納変数を3つ利用。  初期化しておいた方がわかりやすいので、次のように  エントリを定義する前に記述します。  set topPWM 0  set leftPWM 0  set rightPWM 0

ボタン定義

 ボタンは、Set、Clear、Exitの3個用意します。  Exitボタンは、このアプリケーションを終了します。  Setボタンは、3頂点の回転数を入力後にクリックし  次のパラメータを求めます。  Clearボタンは、描画した図を消去。  ボタン定義には、コマンドbuttonを使います。  3ボタンを定義。  button .btnExit -text "Exit" -command "exit"  button .btnSet -text "Set " -command {calSet 0}  button .btnClear -text "Clear" -command {masterClear 0}  表示文字列は、「-text」の右に書きます。  ボタンをクリックしたときの動作は、「-command」の右に書きます。  動作は、1行で書けるときもあれば、何行にもわたることもあります。  何行にもわたる場合は、プロシージャとして別に定義した方が楽です。  2ボタンSet、Clearの動作は、後で記述します。

描画領域定義

 3頂点の回転がつくるVectorとロボットの移動Vectorの  2領域を定義します。  3頂点の方向Vectorとロボットの移動Vectorを表示  する領域がほしいので、左と右に配置。  Tcl/Tkでは、図形表示にはcanvasコマンドを利用します。  図形の描画領域なので、幅と高さが必要です。  また背景色を指定した方がよいので、以下のように定義。 canvas .canOrg -width 200 -height 200 -bg gray canvas .canVector -width [expr $cntv * 2] -height [expr $cntv * 2] -bg gray []は、内部の式を評価し、結果を返す指定。  exprは、expressの意味で、式を実行する指定です。
目次

inserted by FC2 system