ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE ★超美麗!スーパーグラデーションボール.. /北神 陽太 (02/01/07(Mon) 18:39) [84]
......MESSAGE Re[1]: 超美麗!スーパーグラデーション.. /クジラ飛行机 (02/01/07(Mon) 18:45) [85]
............MESSAGE Re[2]: 超美麗!スーパーグラデーション.. /北神 陽太 (02/01/07(Mon) 18:49) [86]
......MESSAGE 超美麗!3Dスーパーグラデーションボール /北神 陽太 (02/01/10(Thu) 14:16) [127]
............MESSAGE Re[2]: ★超美麗!3Dスーパーグラデーシ.. /moka (02/01/10(Thu) 21:02) [130]
..................MESSAGE Re: おお、すごいですねー! /北神 陽太 (02/01/11(Fri) 09:14) [134]
......MESSAGE ★Ver1.3 エラー修正とうずまき描画追加 /北神 陽太 (02/01/29(Tue) 17:09) [345]
............MESSAGE 感想:見てて楽しい /moka (02/01/29(Tue) 18:11) [347]


親記事 / ▼[ 85 ] ▼[ 127 ] ▼[ 345 ]
NO.84  ★超美麗!スーパーグラデーションボールVer1.3
□投稿者/ 北神 陽太 -(2002/01/07(Mon) 18:39:29)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
{Ver1.3の変更点
 1)ひまわりのバージョンによってエラーとなるのを修正。
 2)うずまき状の描画ルーチンを追加。
 3)描画パターンを10種類に追加。
 4)描画個数など、変更パラメータを増やした。
}

{---プログラム掲示板投稿フォーム---
【ソフト名】3Dスーパーグラデーションボール (バージョン 1.3)
【作 成 者】北神 陽太 (連絡先:y-kitagami@nifty.ne.jp)
      http://homepage1.nifty.com/kitagami/index.htm
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.20
【転  件】可(転載条件:ご連絡があると喜びます)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
・超美麗なボールを描き、グラデーションしながら移動します。
・画面のある1点を中心(奥行き)とし、3Dのように描画。
・移動アルゴリズムは、簡単な計算で10種類用意。
・画面をクリックすると、別の描画を始めます。
・パラメータを調整したり、新しい移動ルーチンを追加するのも簡単。
・スクリーンセーバーへの応用もできるでしょう。
---投稿フォームここまで---}

'システム定数
 机幅=デスクトップの幅 '*0.3 '描画が遅い人は<*0.3>を、コメントを、はずし、
 机高=デスクトップの高さ'*0.3 '小さなウィンドでお楽しみください

 調整パターン数=10'●移動調整サブの数
 バータイトル=「3DスーパーグラデーションボールVer1.3 By Y.KITAGAMI 2002(C)」
 RAD=3.1415926/180

'初期設定
 母艦の、サイズは、(0,0,机幅,机高)。その、背景色は、黒色。
  その、タイトルは、バータイトル。
  その、イベントは、母艦クリック。
 母艦を、中央へ移動。

 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 描画個数=グラデーション間隔   '描画した玉のカウンタ
 スパイラル描画回数=0

 -1で、乱数初期化。
 机幅の、乱数。x=それ。
 机高の、乱数。y=それ。
 xc=x。yc=y。'スパイラル用

 x移動方向=1
 y移動方向=1
 ペン太さ=5

 カラー作成を、呼ぶ。
 RF=R。GF=G。BF=B。   '最初の色を設定
 母艦クリックを、呼ぶ。


*メイン
 グラデーション計算を、呼ぶ。
'移動番号=6'移動ルーチンデバッグ用
 もし、移動番号=0なら 移動0を、呼ぶ。'移動調整サブの数だけ記述します
 もし、移動番号=1なら 移動1を、呼ぶ。
 もし、移動番号=2なら 移動2を、呼ぶ。
 もし、移動番号=3なら 移動3を、呼ぶ。
 もし、移動番号=4なら 移動4を、呼ぶ。
 もし、移動番号=5なら 移動5を、呼ぶ。
 もし、移動番号=6なら 移動6を、呼ぶ。
 もし、移動番号=7なら 移動7を、呼ぶ。
 もし、移動番号=8なら 移動8を、呼ぶ。
 もし、移動番号=9なら 移動9を、呼ぶ。
 玉描画を、呼ぶ。
メインへ、飛ぶ。



*母艦クリック
 '描画するパターンをランダムに選択
 黒で、画面クリア。
 x中心=INT(RND*机幅)'3Dの奥(中心)となる座標
 y中心=INT(RND*机高)
 移動番号=INT(RND*(調整パターン数))
 描画個数=0'グラデーション間隔   '描画した玉のカウンタ
 母艦の、タイトルは、「{バータイトル} : パターン={移動番号} 」
戻る。


*玉描画
 玉サイズ回(
  '玉の大きさと色をグラデーションさせます。
  明度=回数/玉サイズ。
  ペン色=RGB(R*明度,G*明度,B*明度)。
  '塗り色=RGB(R*明度,G*明度,B*明度)。'使用しないほうが速いです

  '4つの座標を計算
  x1=x。y1=y。'ノーマル座標
  x2=INT(y*(机幅/机高))。y2=INT(x*(机高/机幅))。'x-y入れ替え座標
  x3=ABS(x-机幅)。y3=ABS(y-机高)   'ノーマル シンメトリー用
  x4=ABS(x2-机幅)。y4=ABS(y2-机高)'x-y入れ替え シンメトリー

  zx=x1。zy=y1。zz=回数。奥行き計算を、呼ぶ。
   (x1-z,y1-z)から、(x1+z,y1+z)へ、円形。
   もし、描画数=1なら、玉描画完了へ、飛ぶ。
  zx=x2。zy=y2。zz=回数。奥行き計算を、呼ぶ。
   (x2-z,y2-z)から、(x2+z,y2+z)へ、円形。
   もし、描画数=2なら、玉描画完了へ、飛ぶ。
  zx=x3。zy=y3。zz=回数。奥行き計算を、呼ぶ。
   (x3-z,y3-z)から、(x3+z,y3+z)へ、円形。
   もし、描画数=3なら、玉描画完了へ、飛ぶ。
  zx=x4。zy=y4。zz=回数。奥行き計算を、呼ぶ。
   (x4-z,y4-z)から、(x4+z,y4+z)へ、円形。
   もし、描画数=4なら、玉描画完了へ、飛ぶ。
*玉描画完了
  )

 描画処理反映。
 描画個数=描画個数+1
戻る。


*奥行き計算
 '中心からの距離によって3D化(玉の大きさを決定)
 z=玉サイズ-zz'回数
 もし、奥行=オンなら、(
  倍率=(玉サイズ/机幅)*0.1
  距離=ABS(x中心 - zx) + ABS(y中心 - zy)
  距離=距離*倍率
  z=INT(距離 * z)
  )
戻る。


*グラデーション計算
 'グラデーション間隔までの色を計算します

 '次の色を設定
 もし、グラデーション間隔=描画個数なら (
  'カラーのFrom-Toを更新
  RF=RT。GF=GT。BF=BT。
  カラー作成を、呼ぶ。
  RT=R。GT=G。BT=B。'To
  R=RF。G=GF。B=BF。'From
  'グラデーションのステップ値
  RS=(RT-RF)/グラデーション間隔
  GS=(GT-GF)/グラデーション間隔
  BS=(BT-BF)/グラデーション間隔
  描画個数=0
  )

 R=R+RS
 G=G+GS
 B=B+BS
 '範囲外チェック
 もし、R<0なら R=0
 もし、G<0なら G=0
 もし、B<0なら B=0
 もし、R>255なら R=255
 もし、G>255なら G=255
 もし、B>255なら B=255

戻る。


*カラー作成
 'はっきりした色調で作成します
 3の、乱数。R=INT(それ)*127
 3の、乱数。G=INT(それ)*127
 3の、乱数。B=INT(それ)*127
 もし、(R=0 かつ G=0 かつ B=0)なら カラー作成へ、飛ぶ。
戻る。




*反射移動処理
 x=x+((移動距離+INT(移動調整x))*x移動方向)
 y=y+((移動距離+INT(移動調整y))*y移動方向)
 '衝突判定
 もし、x>机幅-玉サイズなら x移動方向=-1
 もし、y>机高-玉サイズなら y移動方向=-1
 もし、x<玉サイズなら x移動方向=1
 もし、y<玉サイズなら y移動方向=1
戻る。

*スパイラル移動処理

 スパイラル描画回数=スパイラル描画回数+ステップ
 '描画カウンタ判定
 もし、スパイラル描画回数>=回転数なら、(
  スパイラル描画回数=0。
  x中心=INT(RND*机幅)。'中心となる座標
  y中心=INT(RND*机高)。
 )
 x=x中心+INT(SIN(スパイラル描画回数*RAD)*スパイラル描画回数/ステップ))
 y=y中心+INT(COS(スパイラル描画回数*RAD)*スパイラル描画回数/ステップ))
戻る。


'●基本移動アルゴリズムをここでいじくります。
'追加した場合、システム定数の「調整パターン数」を増やし、
'メインに呼び出す行を追加してください。

*移動0
 'ノーマルタイプの反射型移動
 描画数=4
 玉サイズ=20
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 移動距離=5
 移動調整x=5
 移動調整y=5
 奥行=オン
 反射移動処理を、呼ぶ。
戻る。

*移動1
 'うずまきタイプ「アンモナイト」を描きます
 描画数=1
 玉サイズ=20
 グラデーション間隔=50   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=20
 回転数=1800
 奥行=オフ
 スパイラル移動処理を、呼ぶ。
戻る。

*移動2
 '反射型、タンジェントを使って予想外の描画
 描画数=4
 玉サイズ=20
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 移動距離=1
 移動調整x=ABS(COS(x)*10)
 移動調整y=ABS(TAN(y)*10)
 奥行=オン
 反射移動処理を、呼ぶ。
戻る。

*移動3
 'SQRTを使って飛び跳ねるように反射
 描画数=1
 玉サイズ=20
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 移動距離=1
 移動調整x=ABS(SIN(x *RAD)*20)
 移動調整y=ABS(SQRT(ABS(y) *RAD)*20)
 奥行=オフ
 反射移動処理を、呼ぶ。
戻る。

*移動4
 'SINとCOSによる干渉
 描画数=4
 玉サイズ=20
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 移動距離=1
 移動調整x=ABS(SIN(x *RAD)*20)
 移動調整y=ABS(COS(y *RAD)*20)
 奥行=オン
 反射移動処理を、呼ぶ。
戻る。


*移動5
 'うずまきタイプ「にょろ」を描きます
 描画数=1
 玉サイズ=15
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=40
 回転数=500
 奥行=オフ
 スパイラル移動処理を、呼ぶ。
戻る。

*移動6
 'うずまきタイプ「花火」を描きます
 描画数=1
 玉サイズ=22
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=36
 回転数=1800
 奥行=オン
 スパイラル移動処理を、呼ぶ。
戻る。

*移動7
 '反射と、うずまきタイプ「?」を描きます
 描画数=1
 玉サイズ=20
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=40
 回転数=1800
 奥行=オフ
 移動距離=1
 x中心=x+INT(ABS(COS(x *RAD)*20))
 y中心=y+INT(ABS(SIN(y *RAD)*20))
 スパイラル移動処理を、呼ぶ。
 移動調整x=ABS(SIN(x *RAD)*20)
 移動調整y=ABS(COS(y *RAD)*20)
 反射移動処理を、呼ぶ。
戻る。

*移動8
 'うずまきタイプ「サクラ」を描きます
 描画数=1
 玉サイズ=10
 グラデーション間隔=10   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=70
 回転数=1440
 奥行=オフ
 スパイラル移動処理を、呼ぶ。
戻る。

*移動9
 'うずまきタイプ「ひとで」を描きます
 描画数=1
 玉サイズ=10
 グラデーション間隔=40   ' 1以上。次の色に変わるまでに描画する玉の個数
 ステップ=40
 回転数=1800
 奥行=オフ
 x中心=x+INT(ABS(SIN(x *RAD)*2))
 y中心=y+INT(ABS(COS(y *RAD)*2))
 スパイラル移動処理を、呼ぶ。
戻る。




▲[ 84 ] / ▼[ 86 ]
NO.85  Re[1]: 超美麗!スーパーグラデーションボール
□投稿者/ クジラ飛行机 -(2002/01/07(Mon) 18:45:23)
□U R L/ http://www.text2music.com
綺麗!
玉の動きが複雑で面白いです!

さっそく、いろいろコメントをはずしてみました・・・
おぉぉ!
(OvO)



▲[ 85 ] / 返信無し
NO.86  Re[2]: 超美麗!スーパーグラデーションボール
□投稿者/ 北神 陽太 -(2002/01/07(Mon) 18:49:21)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 Res早すぎですよー。おもしろいアルゴリズムでも追加してください。



▲[ 84 ] / ▼[ 130 ]
NO.127  超美麗!3Dスーパーグラデーションボール
□投稿者/ 北神 陽太 -(2002/01/10(Thu) 14:16:30)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 Ver1.3に更新しました。最初のスレッドを参照してください。



▲[ 127 ] / ▼[ 134 ]
NO.130  Re[2]: ★超美麗!3Dスーパーグラデーションボール
□投稿者/ moka -(2002/01/10(Thu) 21:02:56)
□U R L/ http://www.geocities.jp/moka21/teatime/
おお、すごいですねー!

ただちょっと、うねうねして気持ち悪くもあります。
軌跡を残さずにビュンビュン飛ぶだけじゃ、さっぱりしすぎでしょうか。
ランダムな位置に、描画していくだけ、ってのもどうでしょうか。

実は軌道計算やグラデ処理のソースはまだ見てません。
難しそうだなあという先入観が邪魔をして。



▲[ 130 ] / 返信無し
NO.134  Re: おお、すごいですねー!
□投稿者/ 北神 陽太 -(2002/01/11(Fri) 09:14:16)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 昔VBで作ったものは、妙に有機的で、内蔵のようにキモイものでした・・・。

 ランダム表示や軌跡を描かない移動は、このソースを元に別プログラムで作成中!完全に立体表示(ステレオグラム)に対応する予定なのですが・・・。正体不明のエラーで停止してしまうことが多く、開発は難航しています。



▲[ 84 ] / ▼[ 347 ]
NO.345  ★Ver1.3 エラー修正とうずまき描画追加
□投稿者/ 北神 陽太 -(2002/01/29(Tue) 17:09:55)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
Ver1.3の変更点:
 1)ひまわりのバージョンによってエラーとなるのを修正。
 2)うずまき状の描画ルーチンを追加。
 3)描画パターンを10種類に追加。
 4)描画個数など、変更パラメータを増やした。

 PCのパフォーマンスによって、かなり描画が遅いです。遅い人は、最初のシステム定数で、画面の大きさを小さくしてください。



▲[ 345 ] / 返信無し
NO.347  感想:見てて楽しい
□投稿者/ moka -(2002/01/29(Tue) 18:11:46)
□U R L/ http://www.geocities.jp/moka21/teatime/
バリエーションが豊富で、見てて楽しいです。

私が好きなのは、花火のようなおとなしいものと、
花のつぼみがポコッと咲いたようなものです。

中にはちょっと不気味なものもありますね…。



- Child Tree -