質問箱 No.60: 簡単な図形を描きたい

      ◆ 質問箱 No.60 質問者:  牧野 董  1997年08月 187号 P.20
          ◆ 質問箱 目次へ
No.60-5    簡単な図形を描きたい 回答者
  入川 精二
1997年09月
188号 P.27
   ◆ No.60(1997年 08月号)の回答-05
   いろんなアプローチの方法があると思います。
   私は昔中学校で習った解析幾何学を思い出しました。記憶の糸を手繰りながら、座標系と数式と図形の関連を考えて、何とか糸口を掴んだのが下のプログラムです。
  「最大値」とは菱形の横方向の # の数の最大値です。これを指定するだけで勝手に表を作って作図します。
   15行目の  FOR X3=X1-1 TO -(X1-1) STEP -2; がこのプログラムのポイントです。
   例えば、菱形の最大値を‘7’と指定すると、X3 は  6,4,2,0,-2,-4,-6  と変化します。この数列を使って行毎の # の数を決めて行きます。

【プログラム】
 1 <ZU>
 2 $仕様:   ACCEPT "菱形の最大値は? [MAX:41] ",X1;      /*    菱形のサイズを決める */
 3          IF X1>41 THEN GOTO $仕様;                   /*       X1 が41以上はダメ */
 4          IF X1MOD2=0 THEN LET X1=X1+1;               /* X1 が偶数なら奇数にする */
 5 $作表:   SET/N;S;M;1;180;;Y;
 6          O;図形;%(X1*3);;ESC;
 7          ATR;P;C;1;                                  /*  表の属性はセンタリング */
 8          IR;S;T+1;%X1;
 9 $書込:   FOR X3=X1-1 TO -(X1-1) STEP -2;
10               CLEAR V1;
11               FOR X4=1 TO X1-INTG(ABS(DCML(X3)));    /*            # の数を設定 */
12                   LET V1=" # "+V1;
13               NEXT;
14               LET [H+X2,1]=V1;
15               LET X2=X2+1;
16          NEXT;
17          STOP;

   絶対値を求める関数は‘Z変数’でしか使えないのですね。
   11行目のINTG(ABS(DCML(X3)))  は、単に X3 の絶対値を求めているだけです。

戻る