投稿

ラベル(VL-BASIC)が付いた投稿を表示しています

VL-BASICで惑星の軌道 (2回目)

イメージ
2022/9/23(金) VL-BASICで惑星の軌道 (2回目)   前回 https://ulprojectmail.blogspot.com/2022/09/vl-basic-1.html VL-BASICで惑星の軌道 (1回目) のプログラムを 途中で x軸(横軸)回りに視点を回転可能にしました 春分秋分などの表示文字の回転は非対応です   2022年9月23日(金) の秋分の日の惑星の位置 までを 1年前から表示しました   惑星の 点は手前で大きく、奥で小さく表示しています 軌跡の色と惑星の色は以下の通りです   青軌跡 (惑星) 白  :水星 黄  :金星 水色 :地球 紫  :火星   紫軌跡 (小惑星) 黄  :竜宮 緑  :糸川   その他の惑星や彗星は 2:~冥王星 を選ぶと表示範囲に入ります 表示色などは DATA文を見て下さい 0黒 1青 2赤 3紫 4緑 5水 6黄 7白 8+色は軌跡が紫、色のみは軌跡が青 です   操作方法 '@'キーで自分が上方向へ移動 ':'キーで自分が下方向へ移動 enterキーで真上へ移動     遅いのでキーの押しすぎに注意して下さい   表示される軌道と実際の軌道に ズレがある場合があります 自己責任で使用して下さい (最新の軌道データを使用すると改善されるか もしれません)   VL-BASICとblg~.zip(plan002v.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICで惑星の軌道 (1回目)

イメージ
2022/9/21(水) VL-BASICで惑星の軌道 (1回目)   https://ulprojectmail.blogspot.com/2021/10/n88-basic-2.html N88-BASICで天体の軌道 (2回目) のプログラムを N88-BASIC互換?VL-BASICの 拡張命令 (ブロックIF文や行列関係の命令)を 使用して書き直し   2022年9月23日(金) の秋分の日の惑星の位置を表示 しました   青軌跡 白  :水星 黄  :金星 水色 :地球 紫  :火星   紫軌跡 黄  :竜宮 緑  :糸川   表示される軌道と実際の軌道に ズレがある場合があります 自己責任で使用して下さい (最新の軌道データを使用すると改善されるか もしれません)   VL-BASICとblg~.zip(plan001v.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICでピポッ (3回目)

イメージ
2022/6/20(月) VL-BASICでピポッ (3回目)   PC-9801のピポッを再現(PCM)   2000Hz , 100ms 1000Hz , 100ms の正弦波(Sine wave) でPC-9801の起動音 ピポッ に似た音が鳴ります   今回は、サンプリングレート8000Hz, 16bit, monoの 波形をsin関数で作成して PCM音源としてとして再生しています   VL-BASICは &H80000~&HFFFFF フリーエリア &H80000~    BASIC言語エリア なので、一応 &HA0000~    PCM波形 としています   VL-BASIC、とblg~.zip(pipo003v.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICでピポッ (2回目)

イメージ
2022/6/17(金) VL-BASICでピポッ (2回目)   VL-BASICでPC-9801のピポッを再現(MIDI) PC-9801、PC-8801のN88-BASICや PC-9801のN88-BASIC互換?の NL-BASIC、VL-BASICのMML (Music macro language)で   PLAY "t144l16@20q8v15o6bo5b" または   MPU PLAY "t144l16@1104q8v15o6bo5b" とすると、ピポッとなります (1104 = 128*8+80 = バンク8/音色80)   これを~.mid(SMF:Standard MIDI File) に変換します   VL-BASICを起動し NEW MPU MPU TRON ("pipo") MPU PLAY "t144l16@1104q8v15o6bo5b" MPU TROFF と1行ずつ入力(1行毎にEnterキー)するか pipo002 v.bas(下記リンク)をダウンロードして 実行すると (MPU PLAYの代わりに上記PLAYでも可ですが          0 ,C0,06 … デフォルトの音色 が必ず挿入されます)   pipo.txtが作られます          0 ,F0,41,10,42,12,40,00,7F,00,41,F7          0 ,B0,00,08          0 ,C0,50          0 ,90,5F,7F        104 ,80,5F,7F          0 ,90,53,7F        104 ,80,53,7F Wait(ms:ミリ秒)とMIDI送信データです   pipo.txtをVL-BASIC付属のtron2txt.exe (MIDI→SMFツールでmidフォルダ内に有ります) に重ねると pipo_txt.txtが作られます 4D, 54, 68, 64 ; "Mthd" 00, 00, 00, 06 ; 次の実データ6個で固定 00, 00         ; Format0-2 00, 01         ; トラック数 01, e0         ; 時間

VL-BASICでピポッ (1回目)

イメージ
2022/6/15(水) VL-BASICでピポッ (1回目)   MSGS(Windows標準ソフトウエアMIDI音源)の 正弦波(音色番号080 バンク[008/000] Sine wave)で ピポッを再現しました   MSGSのBank selectについては次のサイトが参考に なりましたので勝手にリンクを貼っておきます MSGSで遊ぼう! (x68uec.org)   このサイトによりますと システムエクスクルーシヴの GS Reset(F0 41 10 42 12 40 00 7F 00 41 F7)hexを 送信しておかないとバンクが切り替わらないそうです (hexは16進数の意味です)   VL-BASICでは A$ = CHR$(&HF0)+CHR$(&H41)+CHR$(&H10)+CHR$(&H42)+CHR$(&H12)+CHR$(&H40) A$ = A$        +CHR$(&H00)+CHR$(&H7F)+CHR$(&H00)+CHR$(&H41)+CHR$(&HF7) MPU MIDI(A$) で送信できます &HF0は16進数のF0と言う意味で CHR$(キャラクターコード&H00~&HFF)で文字に変換して 文字列A$を送信します   バンク切り替えは bank select MSB = 008 (B0 00 08)hex bank select LSB = 000 (B0 20 00)hex です(LSBは常に0の様です)   VL-BASICでは MPU MIDI(&H0800B0) MPU MIDI(&H0020B0)   B0 00 08 は上位と下位バイトを逆にした&H0800B0を指定 します なぜならIntel系CPUでは&H0800B0と言う数値は メモリー内ではB0,00,08の順で格納されるからです   MPU MIDI(CHR$(&HB0)+CHR$(&H00)+CHR$(8)) MPU MIDI(CHR$(&HB0)+CHR$(&H20)+CHR$(0)) (&Hを付けなければ10進数になります) や MPU PLAY

VL-BASICでコーン

イメージ
2022/6/8(水) VL-BASICでコーン   VL-BASICの拡張命令でコーンを表示します   下記LISTの、*CONEからが、 コーン描画のサブルーチンです   GPU PRIM(CONE, a, b, c) はz座標がcのときx,y座標がa,bの 楕円錐を表示します z座標は正負両方向、つまり原点が頂点の 楕円錐が2個表示されます   GPU MATRIX(MODE, MODEL) は行列をモデルモードにします MODELモードは物体を動かし、 VIEWモードは視点を動かします TEXモードはテクスチャーの貼付け 座標を移動します   GPU MATRIX(MODE, PREVIOUS) は行列のモードを1つ戻します (戻せるのは直前の1回のみです)   GPU MATRIX(PUSH)は行列の保存 GPU MATRIX(POP)は保存した行列を戻す   GPU TRANSLATE(0, 0, HIGH / 2) GPU PRIM(OP, AND) GPU PRIM(PLANE, HIGH / 2) 円錐の高さの半分のz座標から高さの 半分の距離の両平面を、円錐とAND します 円錐を2平面で切るイメージです   GPU PRIM(OP, NAND) GPU PRIM(CONE, INNER, INNER, HIGH) 出来た円錐と、内側の円錐を裏表反転 したものをANDします NANDはNOTしてANDします これで立体的なコーンの完成です   テキスチャーを使用しない場合は TEX座標を移動する必要はありません 移動せずにテクスチャーを貼ると 境界がずれます   GPU MATERIAL(TEX, "Sky") この行でエラーが出るときは Sky.bmpが存在する場所に CHDIRしてから走らせて下さい   因みに画面にドラッグ&ドロップ すると、自動でCHDIRされます   VL-BASIC、とblg~.zip(cone001.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

MML

イメージ
2021/9/11(土)~2021/10/14(木) VL-BASICのMML(PLAY)による自動演奏 Windows標準Microsoft GS Wavetable Synth (MSGS)と VirtualMIDISynth (SGM-V2.01.sf2)と YAMAHA MidRadioPlayer(XG Lite、GM1) の比較 (MMLは同じものを使用) 音源 VirtualMIDISynth と音データ SGM-V2.0.1.sf2 をダウンロードしてインストールします Windows10では音源の切替えにMIDIマッパーが必要です 方法はネットで見つけたリンクを勝手に貼っておきます MIDIの音質を向上させる Coolsoft_MIDIMapperのインストール MidRadioPlayerのダウンロードページ http://download.music-eclub.com   VL-BASIC(tron2txt.exe, txt2mid.exe付属)で MPU TRON ("a")、PLAYなど演奏、MPU TROFFで a.txt(待時間とMIDIデータ)作成 tron2txt.exeでa.txt→a_txt.txt(テキストSMF) txt2mid.exeでa_txt.txt→a_txt_txt.mid(SMF) このStandard MIDI Fileを MidRadioPlayerで演奏しています Microsoft GS Wavetable Synth (MSGS) ver. VirtualMIDISynth (SGM-V2.01.sf2) ver. YAMAHA MidRadioPlayer(XG Lite、GM1) ver. Get Wild (TM NETWORK)のMML(PLAY)自動演奏 Get Wild (TM NETWORK)のMML(PLAY)自動演奏SGM Get Wild (TM NETWORK)のMML(PLAY)自動演奏XG sister's noise (fripSide)のMML(PLAY)自動演奏 sister's noise (fripSide)のMML(PLAY)自動演奏SGM sister's noise (fripSide)のMML(PLAY)自動演奏X

N88-BASIC(256色)でレイトレーシング

イメージ
2021/9/10(金) N88-BASIC(256色)でレイトレーシング for VL-BASIC,NL-BASIC,N88-BASIC(PC-9821) by ULproject   N88-BASICでレイトレーシング (1~8回目) をN88-BASIC(256色)で描画するようにしました 1677万7216色から選ぶと256色で足りなくなるので 4096色中256色を選んで描画しています PC-9821(またはVL-BASIC)の 1677万7216色中256色 モードで描画しています   パレット番号0~255の内 0~7を8色モードと同じ色に設定 (VL-BASICは0~15が16色モードの色に設定されて いて使うかもしれないので変更していません) 16:黒 17~255:初めて出てきた色を順次設定 という様に使用しています  プログラム中のN88の値によって N88 = 0でVL-BASIC用(ray201v.bas) N88 = 1でNL-BASIC用(ray201n.bas) N88 = 2でPC-9821用(ray201.bas) の動作をします (NL-BASICが遅いのでN88 = 1では 画面クリアを省略しています)   VL-BASIC,NL-BASICとblg~.zip (ray201v.bas, ray201n.bas, ray201.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICで結晶格子 (3回目)

イメージ
2021/8/8(日) VL-BASICで結晶格子 (3回目)   六方最密構造   r:原子半径 a:単位格子のひし形の辺の長さ(2r) h:単位格子の柱の高さ   六方最密構造の単位格子は ひし形を底面とした四角柱で それが 3個集まると正六角柱となる 正六角形の辺の長さは c = 2r 高さは、正四面体の高さの 2倍となる   上図左の原子の上に中央図の 3つの原子 (太線)が乗っており、さらに左図の原子が 乗る3層構造を考える   右下図の 4つの原子の中心を結ぶと 正四面体になっている これが上下の層に存在するので、 正四面体 2個分の高さが 六角柱の高さとなる   1辺の長さがxの正四面体の高さyは y = √(2/3)x = {(√6)/3}x これを h = 2y , x = 2rに代入 h/2 = {(√6)/3}2r よって 単位格子の柱の高さ h = {(4√6)/3}r 正四面体の高さは 正四面体の重心 (原点とする)から 各頂点へのベクトルを A,B,C,Dとすると (以後大文字は位置ベクトルまたは 点の位置とする ) A,B,C,D方向の力は釣合う関係にある (A + B + C + D = 0ベクトル) ベクトル Dをz軸方向 ベクトル Aのz成分を0にしたベクトルを x軸方向にとると ベクトル A,B,Cのx成分の釣合いから Ax = |Bx| + |Cx| (Ax : Bx = Ax : Cx = 2 : 1)となるので 点 Dから△ABCへの垂線と△ABCの交点Hは △ABCの点から線分BCへの垂線を2:1に 内分する点となっている 線分 AH = △ABCの高さ×(2/3) = 線分AB{(√3)/2}x(2/3) = 線分AB(√3)/3   よって、正四面体の高さ DH(yとする)は 辺の長さ AB(xとする)を使って   x 2  = y 2  + {x(√3)/3} 2   y 2  = x 2  - (3/9)x 2  = (2/3) x 2   y = √(2/3)x = {(√6)/3}x と表せる   原子半径 r 単位格子のひし形の辺の長さ a = 2r 単位格子の柱の高さ h = {(4√6)/3}r   原点を A B方向をx軸 C方向をy軸 D方向をz軸とした 底辺 ABC頂点Dの正四面体構造の 半径 r

VL-BASICで結晶格子 (2回目)

イメージ
2021/8/4(水) VL-BASICで結晶格子 (2回目)   体心立方格子   r:原子半径、a:単位格子の一辺の長さ   上は、体心立方格子を上から正方形の対角線上を 切った断面を横から見た図です   上記正方形の図より、三平方の定理を使用して (a√2) 2  + a 2  = (4r) 2   を変形して (4r) 2  = 3a 2   、 4r = a√3 r = {(√3)/4}a   または、 a = r/{(√3)/4} = 4r/√3 = {(4√3)/3}r   余談 同じ原子半径のときの単位格子の大きさの比較   面心の単位格子の大きさを bとすると r = {(√2)/4}b a = {(4√3)/3}r = {(4√3)/3}{(√2)/4}b   = {(√6)/3}b ≒ 0.8165b     c = a/2、(a = {(4√3)/3}r)とし、(0,0,0)を 単位格子の中心とすると ( 0, 0, 0) (-c,-c,-c), (c,-c,-c), (-c, c,-c), ( c, c,-c) (-c,-c, c), (c,-c, c), (-c, c, c), ( c, c, c) を中心とする半径 rの9個の球を単位格子でカット して表示しています     充填率を求めて見ました   半径 rの球の体積Vは V = 4πr 3 /3   単位格子中の原子数 n 原子半径 r 単位格子の体積 v 充填率 p(%)とすると p = 単位格子中の原子の体積/v × 100(%) p = 100n(4πr 3 /3) / v   a:単位格子の辺長 体心立方格子 n = 2, a = (4r√3)/3 v = a 3  = {(4r√3)/3} 3  = 4 3 r 3 √3/3 2   p = 100n(4πr 3 /3) / v = 100・2(4πr 3 /3) / (4 3 r 3 √3/3) = 25π / (2√3) = (25π√3)/2   ? 25*3.141592653589793*sqr(3)/2 68.01747615878317   VL-BASICとblg~.zip(cris002.bas)は 以下のリンクからダウンロードできます V L-BASIC(N88-BASIC互換?)ホームページ Read