[FM]FULLMSX for BLOG

詳しいMSXパソコンなどの情報はホームページで!
https://fullmsx.web.fc2.com/

MSXBASICで図形を描く 他のBASICとの違い

2022-04-08 17:32:32 | 1chipMSX

お久しぶりです。プログラミングの近道は新たに覚えて慣れることです。
既に他の言語ができる方も多いと思いますが移植とかそんな難しいことは考えないで
これはカンタンにできる、これはできないと割り切ってその言語やモードが最適かを見極めることです。
言語などが多様化していますのでこういうのがいいと思います。
今回は1980年代に戻ってMSXBASICで図形を描くことをしています。
MSX2のSCREEN5を使いました。

 MSXパソコンはキーボード操作がメインになりビッツーなどグラフィックソフト(GUI)を使ったかたならマウスを使っていました。
この両方のデバイスに対応するために数年前からプログラムを調整していました。

 今回は255x211の解像度で10cmであれば100pxというふうに1mm間隔で描けるようにします。
グリッドは10mm間隔です。
最大で横が255mm、縦が211mmでだいたいA4サイズ横方向で(297x210)に収まる感じです。
寸法を設定すると図形が表示できるようなプログラムにしていこうと思います。
MSXパソコンで残念?なことは低解像度ですがスケールで計算すると何かできそうな感じがしてきました。
低解像度は粗いので逆に座標をクリックしやすいことがよいです。

N88-BASICを使ったことがありますが図形と文字入力を簡単に表示させることができます。
MSXBASICは文字出力という定義をして文字を表示させることはできますが入力はできません。
まだ仮の設定なのでSCREEN0でやっていきます。
この設定の場合プログラムを書き加えたり書き直しをしてもグラフィックを描画しなければ画像が残ります。

文字入力はSCREEN0でグラフィックは文字データと重ならないようにSETPAGEで使用しないエリアにしました。
今のところ四角形、円など基本図形を指定された寸法で表示できるようにしていきます。

例えばスマホの寸法を入力するとこんな感じです。



ブラウン管とは違って液晶モニタなので見え方に若干違いがあるのか、
ぜんぜん縦横比が悪い感じではないです。

または倍精度実数で座標データの入力は可能ですが、
将来的に整数型に変えると32767までの数値に限定されますが処理が高速になります。
小数点が使えないのでデータ閲覧や入力時に変換するようにしました。
例えばデータ値の1が0.01になり、50では0.5です。
このプログラムの有効範囲は0~255.00で変換の場合は小数点2位まで入力する必要があります。
こんなふうにグラフィックモードでプログラムを変えることはN88-BASICではできます。

これはわかりやすいように合成したのですが、CIRCLEは100,100が中心点、R=50、15は白色、Sが開始点、Eが終点の反時計回りに指定します。
単位はラジアンでラジアンとかわからなくても実行結果に慣れれば平気です。
半円が3.14です。円が0か3.14*2になります。度数法の場合は360を割った数になりますがラジアンは3等分とか5等分とか自由です。
高校の数学なのでちょっと難しいかな。またMSXBASICでは工夫する必要があります。
実行画面は円弧の表示のみで90行で入力待ちにして画面が変わるのを止めています。

これを応用して1ドット1ドット移動して文字などの「図形の移動とかできそうな気がしますが」どうなんでしょうか?


ガタガタになりますがこんなふうにできます。(スゴイ)
X軸だけならこうなりますがY軸の場合は角度が変わってくるので半径と角度を算出する必要がありそうでます。

8ドットのMならば8*8px=64の座標の回転角を出す感じです。
このようにディスク面に付箋紙をはってぐるっと回したようになります。
一見簡単そうに見えますがCADで出力すると矩形範囲がテクニカルな部分ということがわかります。

もう少し試してみたいと思います。

最後にグラフィックプログラムで私の最高作品と言えば

1994年に箱根寄木細工の七宝矢羽根のシミュレーションを作りました。
当時は神奈川県に住んでいて厚木から小田原まで通っていました。
まだWindows95が発売される前でパソコン通信が流行していた時代です。

電話代の計算とか雷が光って雷鳴する時間差で推定距離を出したり仕事のほうでは
高校の数学を駆使して木工作業でどんな感じになるのかをシミュレーションしてみました。
七宝の弧の出し方は円をカットしてそれを裏ページでコピーしているのですが、
たしか弧の開始点と終了点の計算をにニ点間の距離で計算していると思います。

このプログラムはMSX2+の漢字BASICとSCREEN8を使っています。
また1chipMSX改ならここまで使うことができます。
漢字BASICではシフトJISコードを使って漢字表示しています。
通常のBASICで漢字の部分は記号や半角ひらがななどのMSX文字に化けています。

僅かな数値の違いで雰囲気が大きく変わることがわかりました。
でもまだ満足していない弧のプログラムを改良したかった(カッターフカスギル)のが心残りですね。
90度の弧ではなく45度くらいの弧とかにできたら良かったです。
その後、サヤ形とか麻の葉とか作ったのですがやっぱりこれがいいです。
さくらじゃなくて七宝の円弧の柔らかい感じがあるとなんとなくいいです。
矢羽根だけも試したのですがやっぱりカクカクカタイ感じですね。
面白そうなものがあればまた載せてみたいと思います。では。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする