REALbasicで作ったプロジェクトファイル(ソースプログラム)は、将来REALbasicのバージョンが上がって、ウィンドウズ用のコンパイルが可能になったとき(このような方向で開発は進んでいるようです)、ほとんど変更せずに、ウィンドウズ用のプログラムとして使えることになります。ちなみに、今回のプログラムは1年以上前に(CrossBasicの時代に)作ったものですが、もちろんそのまま最新のREALbasicで走るし、当時、Buildしたアプリケーションのサイズは800kB以上でしたが、現在では、同じプロジェクトファイルをBuildすると300KB程度で済みます。
第18回 - 関数式の立体表示-
立体図形をぐりぐり回転させるものを作ってみました。マックに付いてくるグラフ計算機には遠く及びませんが、自分が実現したいことを1つ1つ積み重ねていく楽しさを味わって下さい。表示速度を気にしなければグラフ計算機では描くことができない、球体や円錐と平面の交わりなどを表示する事も可能です。ぜひ考えてみて下さい。
プログラムの説明
座標軸回転のサブルーチン「axisrotate」はModule1に作りました。このサブルーチンの計算結果は、同じくModule1に宣言した変数「x3 ,y3」に代入しています。このような方法は後からこのサブルーチンだけを別のプログラムで利用する場合には不便です。戻り値を複数もつサブルーチンは新しいクラスを作ることで実現できますので興味のある方は、「覚え書き」の部分を御覧下さい。
スクロールバーと連動してグラフを回転させるようにしました。このため「Window1」のサブルーチン「hyouji1」がメインプログラムになります。
また、描いた図形をPICT形式で保存できるように、プリンターで印刷できるようにしました。
関数式を変更する方法
関数式の変更は、Module1で関数式のサブルーチン「fx1」を変更します。
- REALbasicで「3D波面 Ver1.0f」のファイルを開きます。
- EditメニューからEditorSettingsを開きSource EditorのFontをOsakaにします。
- ProjectのウインドウからModule1をダブルクリックすると「Module1」とタイトルの付いたウインドウが開きます。このウインドウにある「Methods」の中から「fx1」を選ぶと関数式のサブルーチンが表示されます。
たとえば以下の部分
dim z as double z=10*sin(2*3.14*((0/10)-(sqrt( x*x+y*y) )/ramda)) //z=(x*x+y*y)/1000 //z=(x*x*x+y*y)/10000 //z=1000/sqrt(x*x+y*y) //z=1000/sqrt((x-50)*(x-50)+y*y)+200/sqrt((x+50)*(x+50)+y*y) ////--これは半球(以下の3行が必要です)-------- //z=sqrt(1000-(x*x)-(y*y)) //if (1000-(x*x)-(y*y))<0 then //z=0 //end if ////------------------------- return z
この中には適当に関数を注釈の形で入れていますので、表示したい関数の前の「//」を削除してみて下さい。もちろん表示しない関数には行の前に「//」をつけておきます。自分でいろいろ試してお楽しみください。
今回の「3D波面 Ver1.0f」の ソースプログラムです。おまけに、パラメータ表現でないと描くことのできない、球やドーナツなどを描く「3D球 Ver1.0f」と第14回での連続表示を合体した「PictMakerWave」を付けました。
プロジェクトファイルのみです。REALbasicの最新バージョンが必要です。30 kバイト
ソースコードについての質問やご意見がありましたら以下のアドレスまでご連絡下さい。
koko-@mx2.tiki.ne.jp