mieki256's diary



2023/09/05(火) [n年前の日記]

#1 [hsp] 疑似3D道路その2

_昨日 の続き。HSP 3.6 を使って、疑似3D道路が作れないか試しているところ。

カーブを実装したいのだけど、何をどうしたらいいのやら。とりあえず、セグメントなる概念でデータテーブルを用意しないとカーブにしろ丘にしろ表現しづらい感じがしてきたので、まずはセグメントの形で道路のデータを持てないか試している。

配列変数の初期化について :

HSP は配列変数の初期化をする際に、カンマ区切りでずらずらと数値を書けないようで…。以下のような書き方になってしまう。
    dim a, 5, 3
    a(0, 0) = 20        ; count
    a(0, 1) = 0         ; curve
    a(0, 2) = 0         ; pitch
    a(1, 0) = 30
    a(1, 1) = 10
    a(1, 2) = 0
    a(2, 0) = 20
    a(2, 1) = -10
    a(2, 2) = 0
    a(3, 0) = 20
    a(3, 1) = 0
    a(3, 2) = 2
    a(4, 0) = 20
    a(4, 1) = 0
    a(4, 2) = -2
このへんどうにかならんのか。

マクロを書いて、多少は見た目を改善する方法はあるっぽい。

_配列変数の連続代入について - HSPTV!掲示板
#define set_array(%1, %2,  %3, %4, %5) \
  %1(%2, 0) = %3 :\
  %1(%2, 1) = %4 :\
  %1(%2, 2) = %5 :

set_array a, 0, 20, 0, 0
set_array a, 1, 30, 10, 0
set_array a, 2, 20, -10, 0
set_array a, 3, 20, 0, 2
set_array a, 4, 20, 0, -2

配列の中にdoubleを混ぜたい :

配列変数の中に int と double を混在させたいのだけど、エラーが出てしまった。

double だけを列挙するのであれば、ddim を使えるようだけど…。ddim を使うと、int が記述できなくなる。

仕方ないので、double として使いたい数値は、100倍して int として入れておくことにした。取り出す際に、double(a(0, 0)) * 0.01 とでもすれば、double として扱えなくもないだろう…。

考えてみたらアセンブラで書いてた頃は、256倍なり65536倍なりして固定小数点で色々やってたので、そういう書き方をすればいいのかな。でも、この時代ににそんな書き方はしたくない…。

以上です。

過去ログ表示

Prev - 2023/09 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project