sgl 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. data/ChangeLog +234 -0
  2. data/Manifest.txt +94 -0
  3. data/Rakefile +16 -5
  4. data/examples/cocoa1-basic.rb +14 -0
  5. data/examples/cocoa10-transparent.rb +26 -0
  6. data/examples/cocoa11-application.rb +13 -0
  7. data/examples/cocoa2-draw.rb +23 -0
  8. data/examples/cocoa3-affine.rb +29 -0
  9. data/examples/cocoa4-font.rb +24 -0
  10. data/examples/cocoa5-image.rb +22 -0
  11. data/examples/cocoa6-sound.rb +24 -0
  12. data/examples/cocoa7-movie.rb +40 -0
  13. data/examples/cocoa8-movieoverlay.rb +42 -0
  14. data/examples/cocoa9-streaming.rb +40 -0
  15. data/examples/opengl1-basic.rb +14 -0
  16. data/examples/opengl11-application.rb +13 -0
  17. data/examples/opengl2-draw.rb +23 -0
  18. data/examples/opengl3-affine.rb +29 -0
  19. data/examples/sample1.rb +11 -0
  20. data/examples/sample10.rb +16 -0
  21. data/examples/sample11.rb +22 -0
  22. data/examples/sample11a.rb +33 -0
  23. data/examples/sample12.rb +30 -0
  24. data/examples/sample12a.rb +35 -0
  25. data/examples/sample13.rb +116 -0
  26. data/examples/sample15.rb +24 -0
  27. data/examples/sample16.rb +31 -0
  28. data/examples/sample16a.rb +35 -0
  29. data/examples/sample6.rb +18 -0
  30. data/examples/sample7.rb +16 -0
  31. data/examples/sample9.rb +20 -0
  32. data/examples/sgl-sound1.rb +6 -0
  33. data/examples/sgl-sound2.rb +19 -0
  34. data/examples/sine.ogg +0 -0
  35. data/examples/testgl.rb +169 -0
  36. data/lib/sgl/bass-api.rb +202 -0
  37. data/lib/sgl/bass-sample.rb +106 -0
  38. data/lib/sgl/bass.rb +46 -0
  39. data/lib/sgl/cocoa-app.rb +43 -0
  40. data/lib/sgl/cocoa-color.rb +65 -0
  41. data/lib/sgl/cocoa-draw.rb +72 -0
  42. data/lib/sgl/cocoa-event.rb +229 -0
  43. data/lib/sgl/cocoa-media.rb +144 -0
  44. data/lib/sgl/cocoa-notuse.rb +493 -0
  45. data/lib/sgl/cocoa-window.rb +203 -0
  46. data/lib/sgl/cocoa.rb +8 -0
  47. data/lib/sgl/notuse-objs.rb +358 -0
  48. data/lib/sgl/opengl-app.rb +38 -0
  49. data/lib/sgl/opengl-color.rb +44 -0
  50. data/lib/sgl/opengl-draw.rb +260 -0
  51. data/lib/sgl/opengl-event.rb +325 -0
  52. data/lib/sgl/opengl-modules.rb +22 -0
  53. data/lib/sgl/opengl-window.rb +224 -0
  54. data/lib/sgl/opengl.rb +7 -0
  55. data/lib/sgl/sgl-basic.rb +61 -0
  56. data/lib/sgl/sgl-button.rb +135 -0
  57. data/lib/sgl/sgl-client.rb +21 -0
  58. data/lib/sgl/sgl-color.rb +82 -0
  59. data/lib/sgl/sgl-connect.rb +9 -0
  60. data/lib/sgl/sgl-objlib.rb +0 -0
  61. data/lib/sgl/sgl-objs.rb +0 -0
  62. data/lib/sgl/sgl-server.rb +58 -0
  63. data/lib/sgl/sgl-sound.rb +24 -0
  64. data/lib/sgl/sgl-spring.rb +216 -0
  65. data/lib/sgl/sgl-timer.rb +72 -0
  66. data/lib/sgl/sgl.rb +5 -0
  67. data/lib/sgl/version.rb +2 -2
  68. data/scripts/makemanifest.rb +20 -0
  69. data/test/test_bass.rb +27 -0
  70. data/test/test_cocoa_app.rb +5 -5
  71. data/test/test_helper.rb +9 -1
  72. data/test/test_module_ruby16.rb +22 -21
  73. data/test/test_opengl_app.rb +4 -5
  74. data/test/test_opengl_basic.rb +3 -4
  75. data/test/test_opengl_fullscreen.rb +4 -6
  76. data/test/test_opengl_novice.rb +3 -6
  77. data/test/test_sgl.rb +4 -27
  78. data/test/test_sound.rb +15 -0
  79. data/website/challenge1.html +91 -0
  80. data/website/challenge1.txt +30 -0
  81. data/website/challenge2.html +144 -0
  82. data/website/challenge2.txt +73 -0
  83. data/website/challenge3.html +63 -0
  84. data/website/challenge3.txt +15 -0
  85. data/website/cocoa.html +88 -0
  86. data/website/cocoa.txt +35 -0
  87. data/website/description.html +138 -0
  88. data/website/description.txt +90 -0
  89. data/website/exercise1.html +264 -0
  90. data/website/exercise1.txt +192 -0
  91. data/website/exercise2.html +683 -0
  92. data/website/exercise2.txt +597 -0
  93. data/website/exhibition.html +84 -0
  94. data/website/exhibition.txt +24 -0
  95. data/website/howto.html +134 -0
  96. data/website/howto.txt +56 -0
  97. data/website/index.html +17 -9
  98. data/website/index.txt +13 -4
  99. data/website/sound.html +141 -0
  100. data/website/sound.txt +87 -0
  101. data/website/stylesheets/grade.png +0 -0
  102. data/website/stylesheets/screen.css +21 -20
  103. metadata +109 -3
@@ -0,0 +1,88 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ sgl-cocoa &#x2192; sgl with Ruby/Cocoa
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>sgl-cocoa &#x2192; sgl with Ruby/Cocoa</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <h2>What</h2>
39
+
40
+
41
+ <p>&#8216;sgl-cocoa&#8217; is a cocoa version of sgl.
42
+ You can use sgl functions with Ruby/Cocoa.</p>
43
+
44
+
45
+ <h2>Requirement</h2>
46
+
47
+
48
+ <p>You can use this only on Mac <span class="caps">OS X</span>.</p>
49
+
50
+
51
+ <h3>Mac <span class="caps">OS X</span></h3>
52
+
53
+
54
+ <ul>
55
+ <li>Mac <span class="caps">OS X 10</span>.3 or later</li>
56
+ <li>ruby 1.8.5 or later</li>
57
+ <li>RubyCocoa 0.4.1 or later</li>
58
+ </ul>
59
+
60
+
61
+ <h2>The basics</h2>
62
+
63
+
64
+ Save this progarm as <code>test1.rb</code>.
65
+ <pre syntax="ruby">
66
+ require "sgl/cocoa"
67
+
68
+ def setup
69
+ window 100, 100
70
+ end
71
+
72
+ def display
73
+ line 0, 0, 100, 100
74
+ end
75
+
76
+ mainloop
77
+ </pre>
78
+
79
+ <p>Run the program with <code>ruby test1.rb</code>.</p>
80
+ <p class="coda">
81
+ 19th June 2007<br>
82
+ </p>
83
+ </div>
84
+
85
+ <!-- insert site tracking codes here, like Google Urchin -->
86
+
87
+ </body>
88
+ </html>
data/website/cocoa.txt ADDED
@@ -0,0 +1,35 @@
1
+ h1. sgl-cocoa &#x2192; sgl with Ruby/Cocoa
2
+
3
+ h2. What
4
+
5
+ 'sgl-cocoa' is a cocoa version of sgl.
6
+ You can use sgl functions with Ruby/Cocoa.
7
+
8
+ h2. Requirement
9
+
10
+ You can use this only on Mac OS X.
11
+
12
+ h3. Mac OS X
13
+
14
+ * Mac OS X 10.3 or later
15
+ * ruby 1.8.5 or later
16
+ * RubyCocoa 0.4.1 or later
17
+
18
+ h2. The basics
19
+
20
+ Save this progarm as @test1.rb@.
21
+ <pre syntax="ruby">
22
+ require "sgl/cocoa"
23
+
24
+ def setup
25
+ window 100, 100
26
+ end
27
+
28
+ def display
29
+ line 0, 0, 100, 100
30
+ end
31
+
32
+ mainloop
33
+ </pre>
34
+
35
+ Run the program with @ruby test1.rb@.
@@ -0,0 +1,138 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ sglの説明
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>sglの説明</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <h2>What is sgl?</h2>
39
+
40
+
41
+ <p>sglは,Rubyからグラフィックやサウンドを簡単に扱えるようにしたライブラ
42
+ リである.できるだけ優しくプログラミングを初められるように,シンプルな
43
+ 記述で必要最小限の動作するプログラムを作成できるようになっている.</p>
44
+
45
+
46
+ <p><a href="http://dbn.media.mit.edu/"><span class="caps">DBN</span></a> というプログラミング環境が提供していた
47
+ 理念を継承し,可能な限り簡単にプログラミングに取り組めるように工夫して
48
+ いる.DBNの理念を継承した環境として,
49
+ <a href="http://www.processing.org/">Processing</a> とは兄弟関係にあると言える.</p>
50
+
51
+
52
+ <p>グラフィックスはOpenGL,Window表示,マウス入力,キー入力などにはSDLを
53
+ 用いている.またMIDIの入出力なども組み合せて使えるようになっている.ラ
54
+ イブラリーの構造はGLUTを参考にしている.</p>
55
+
56
+
57
+ <pre syntax="ruby">
58
+ # 基本的なプログラムの例
59
+ reuire 'sgl' # 最初に必ず必要
60
+ window 100,100 # 100x100のウィンドウを生成
61
+ background 0 # 背景は黒にします
62
+ color 100 # 白を指定します
63
+ line 20,20,80,80 # 線を引きます
64
+ rect 20,20,80,80 # 四角を描きます
65
+ wait # プログラムが終了しないように待つ.ESCキーで終了する.
66
+
67
+ # 色空間
68
+ color 100,0,0 # 赤になる.r,g,bで色が使える
69
+ color 100,0,0,50 # 半透明の赤.100が不透明(デフォルト).0が完全に透明.
70
+ colorHSV 50,0,100 # hsv方式での色指定もできる.
71
+ backgroundHSV 70,0,100 # 背景の指定もhsvでできる.
72
+ colorHSV 50,0,100,50 # もちろんhsv方式でもアルファ値は指定できる.
73
+
74
+ # 3Dも使える
75
+ useFov(60) # field of view.画角を指定
76
+ useDepth # depth bufferを使う
77
+ line 20,20,20,80,80,80 # とりあえず線
78
+ color 0,100,0,50 # とりあえず半透明
79
+ box 20,20,20,80,80,80 # 箱.半透明になっている
80
+ useSmooth # 線にanti aliasがかかる.
81
+
82
+ # MIDI関係
83
+ useMidi # midiを使うということ宣言
84
+ note 1, 60, 90, 100 # ch, note, vel, msec.
85
+
86
+ # 詳細な描画について
87
+ beginObj(QUADS)
88
+ vertex 20,20
89
+ vertex 80,20
90
+ vertex 80,80
91
+ vertex 20,80
92
+ endObj
93
+ # 同様に,vertexにz軸の情報を加えれば,3Dとなる.
94
+
95
+ オブジェクトの種類は,
96
+ LINES POINTS LINE_STRIP LINE_LOOP TRIANGLES TRIANGLE_STRIP
97
+ TRIANGLE_FAN QUADS QUAD_STRIP POLYGON
98
+ が使える.OpenGLと同じ.
99
+
100
+ # 基本的なループ構造
101
+ window 100,100
102
+ def display
103
+ line 0,0,100,100
104
+ end
105
+ mainloop
106
+ とすると,ループして,描画しつづける.
107
+
108
+ # マウス入力
109
+ ループした状態で,
110
+ def onMouseDown(x,y)
111
+ line 0,0,x,y
112
+ end
113
+ などとすると,callbackがかかる.
114
+ 同様に,onMouseUp, onKeyDown, onKeyUpなど.
115
+
116
+ # MIDI input関係
117
+ useMidiIn # midi inを使うということ宣言
118
+ def onNoteOn(ch, note, vel)
119
+ p [ch, note, vel]
120
+ end
121
+ などとできる.
122
+
123
+ 同様に,onNoteOff(ch, note)もある.
124
+
125
+ # ソフトサンプラー機能
126
+ useSound
127
+ sound = loadSound('sine.wav')
128
+ sound.play(60, 100, -100) # note, vel, pan
129
+ </pre>
130
+ <p class="coda">
131
+ 25th June 2007<br>
132
+ </p>
133
+ </div>
134
+
135
+ <!-- insert site tracking codes here, like Google Urchin -->
136
+
137
+ </body>
138
+ </html>
@@ -0,0 +1,90 @@
1
+ h1. sglの説明
2
+
3
+ h2. What is sgl?
4
+
5
+ sglは,Rubyからグラフィックやサウンドを簡単に扱えるようにしたライブラ
6
+ リである.できるだけ優しくプログラミングを初められるように,シンプルな
7
+ 記述で必要最小限の動作するプログラムを作成できるようになっている.
8
+
9
+ "DBN":http://dbn.media.mit.edu/ というプログラミング環境が提供していた
10
+ 理念を継承し,可能な限り簡単にプログラミングに取り組めるように工夫して
11
+ いる.DBNの理念を継承した環境として,
12
+ "Processing":http://www.processing.org/ とは兄弟関係にあると言える.
13
+
14
+ グラフィックスはOpenGL,Window表示,マウス入力,キー入力などにはSDLを
15
+ 用いている.またMIDIの入出力なども組み合せて使えるようになっている.ラ
16
+ イブラリーの構造はGLUTを参考にしている.
17
+
18
+ <pre syntax="ruby">
19
+ # 基本的なプログラムの例
20
+ reuire 'sgl' # 最初に必ず必要
21
+ window 100,100 # 100x100のウィンドウを生成
22
+ background 0 # 背景は黒にします
23
+ color 100 # 白を指定します
24
+ line 20,20,80,80 # 線を引きます
25
+ rect 20,20,80,80 # 四角を描きます
26
+ wait # プログラムが終了しないように待つ.ESCキーで終了する.
27
+
28
+ # 色空間
29
+ color 100,0,0 # 赤になる.r,g,bで色が使える
30
+ color 100,0,0,50 # 半透明の赤.100が不透明(デフォルト).0が完全に透明.
31
+ colorHSV 50,0,100 # hsv方式での色指定もできる.
32
+ backgroundHSV 70,0,100 # 背景の指定もhsvでできる.
33
+ colorHSV 50,0,100,50 # もちろんhsv方式でもアルファ値は指定できる.
34
+
35
+ # 3Dも使える
36
+ useFov(60) # field of view.画角を指定
37
+ useDepth # depth bufferを使う
38
+ line 20,20,20,80,80,80 # とりあえず線
39
+ color 0,100,0,50 # とりあえず半透明
40
+ box 20,20,20,80,80,80 # 箱.半透明になっている
41
+ useSmooth # 線にanti aliasがかかる.
42
+
43
+ # MIDI関係
44
+ useMidi # midiを使うということ宣言
45
+ note 1, 60, 90, 100 # ch, note, vel, msec.
46
+
47
+ # 詳細な描画について
48
+ beginObj(QUADS)
49
+ vertex 20,20
50
+ vertex 80,20
51
+ vertex 80,80
52
+ vertex 20,80
53
+ endObj
54
+ # 同様に,vertexにz軸の情報を加えれば,3Dとなる.
55
+
56
+ オブジェクトの種類は,
57
+ LINES POINTS LINE_STRIP LINE_LOOP TRIANGLES TRIANGLE_STRIP
58
+ TRIANGLE_FAN QUADS QUAD_STRIP POLYGON
59
+ が使える.OpenGLと同じ.
60
+
61
+ # 基本的なループ構造
62
+ window 100,100
63
+ def display
64
+ line 0,0,100,100
65
+ end
66
+ mainloop
67
+ とすると,ループして,描画しつづける.
68
+
69
+ # マウス入力
70
+ ループした状態で,
71
+ def onMouseDown(x,y)
72
+ line 0,0,x,y
73
+ end
74
+ などとすると,callbackがかかる.
75
+ 同様に,onMouseUp, onKeyDown, onKeyUpなど.
76
+
77
+ # MIDI input関係
78
+ useMidiIn # midi inを使うということ宣言
79
+ def onNoteOn(ch, note, vel)
80
+ p [ch, note, vel]
81
+ end
82
+ などとできる.
83
+
84
+ 同様に,onNoteOff(ch, note)もある.
85
+
86
+ # ソフトサンプラー機能
87
+ useSound
88
+ sound = loadSound('sine.wav')
89
+ sound.play(60, 100, -100) # note, vel, pan
90
+ </pre>
@@ -0,0 +1,264 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ 練習問題 1〜10
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>練習問題 1〜10</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <h2>課題1 基本 (window, background, color, line)</h2>
39
+
40
+
41
+ <h3>課題1A 一本の線を描くプログラムを作る</h3>
42
+
43
+
44
+ <h3>課題1B ある考えの元に3本の線を描くプログラムを作る</h3>
45
+
46
+
47
+ <h3>課題1C 5本以下の直線で「変化」を表現するプログラムを作る</h3>
48
+
49
+
50
+ <h3>課題1D 10本以下の直線で「ハーモニー(調和)」を表現するプログラムを作る</h3>
51
+
52
+
53
+ <pre syntax="ruby">
54
+ require 'sgl' # プログラムの最初に必ず書く必要がある
55
+ window 100, 100 # windowを開く
56
+ background 0 # 背景を黒にする
57
+ color 100 # 描画する色を白にする
58
+ line 0, 0, 100, 100 # 左下から右上に線を描く
59
+ wait # そのまま待つ
60
+ </pre>
61
+
62
+ <h3>半透明色の使い方</h3>
63
+
64
+
65
+ <pre syntax="ruby">
66
+ require 'sgl'
67
+ window 100,100
68
+ color 100, 0, 0 # 赤
69
+ rect 10,10,70,70 # 四角
70
+ color 0,0,100,50 # 半透明の青
71
+ rect 30,30,90,90 # 四角を重ねてかく
72
+ wait
73
+ </pre>
74
+
75
+ <h2>課題2A</h2>
76
+
77
+
78
+ 一つの変数を使って2本の直線の構成をコントロールするプログラムを作る.
79
+ <pre syntax="ruby">
80
+ require 'sgl'
81
+ window 100, 100
82
+ a = 50
83
+ line 0, 0, 50, a
84
+ line 100, 0, 50, a
85
+ wait
86
+ </pre>
87
+
88
+ <h2>課題3A 繰り返し (for a in 0..100; end)</h2>
89
+
90
+
91
+ 繰り返しを使った形態を描く.
92
+ <pre syntax="ruby">
93
+ require 'sgl'
94
+ window 100, 100
95
+ for a in 20..80
96
+ color a
97
+ line a, 0, a, 100
98
+ end
99
+ wait
100
+ </pre>
101
+
102
+ <h2>課題4A 計算 (+ &#8211; * /)</h2>
103
+
104
+
105
+ 計算を使った形態をかくプログラムを作る.
106
+ <pre syntax="ruby">
107
+ require 'sgl'
108
+ window 100, 100
109
+ for a in 20..40
110
+ color a
111
+ line(a, 0, a*2, 100)
112
+ end
113
+ wait
114
+ </pre>
115
+
116
+ <h2>課題6A kadai6a.rb</h2>
117
+
118
+
119
+ h3. 入れ子構造 6A 格子状にひろがる形態を作る.
120
+ <pre syntax="ruby">
121
+ # kadai6a.rb
122
+ require 'sgl'
123
+ window 200,200
124
+ for a in 0..10
125
+ for b in 0..10
126
+ color a*10, b*10, b*10
127
+ rect a*20+5, b*20+5, a*20+15, b*20+15
128
+ end
129
+ end
130
+ wait
131
+ </pre>
132
+
133
+ <h2>課題7A kadai7a.rb</h2>
134
+
135
+
136
+ h3. 質問 (if 50 &lt; a; end) 7A 画面の左右で違う形態を描く.
137
+ <pre syntax="ruby">
138
+ # kadai7a.rb
139
+ require 'sgl'
140
+ window 200,200
141
+ for a in 0..200
142
+ color a/2, 50, 50
143
+ if a &lt; 100
144
+ line a, 50, a, 100
145
+ else
146
+ line a, 100, a, 150
147
+ end
148
+ end
149
+ wait
150
+ </pre>
151
+
152
+ <h2>課題8A</h2>
153
+
154
+
155
+ <h3>defを使って自分なりのコマンドを作り,それを用いた形態を描く.</h3>
156
+
157
+
158
+ ファイル名 kadai8a.rb
159
+ <pre syntax="ruby">
160
+ require 'sgl'
161
+ window 100,100
162
+ background 100
163
+
164
+ def my_rect(x1, y1, x2, y2, outline, fill)
165
+ color fill
166
+ rect x1, y1, x2, y2
167
+ color outline
168
+ line x1, y1, x2, y1
169
+ line x2, y1, x2, y2
170
+ line x2, y2, x1, y2
171
+ line x1, y2, x1, y1
172
+ end
173
+
174
+ my_rect(20, 20, 40, 30, 20, 50)
175
+ my_rect(60, 60, 80, 90, 70, 90)
176
+ wait
177
+ </pre>
178
+
179
+ <p>defというコマンドで関数を定義する.自分がよく使う形,例えば枠付きの塗
180
+ りつぶされた四角形を定義する.defの後に続くのが関数名である.アルファ
181
+ ベットの小文字から始まっている必要がある.</p>
182
+
183
+
184
+ <h2>課題9A</h2>
185
+
186
+
187
+ <h3>flipを使ってアニメーションを作る.</h3>
188
+
189
+
190
+ ファイル名 kadai9a.rb
191
+ <pre syntax="ruby">
192
+ require 'sgl'
193
+ window 100,100
194
+ loop do
195
+ for a in 0..100
196
+ line 20,a,80,a
197
+ flip
198
+ end
199
+ end
200
+ wait
201
+ </pre>
202
+
203
+ <p>flipというところで、ちょうど紙をめくるように次の画面を表示させている。
204
+ <code>loop do 〜〜〜 end</code> で,その間を無限に繰り返す.</p>
205
+
206
+
207
+ <h2>課題10A</h2>
208
+
209
+
210
+ <h3><span class="caps">HSV</span>による色指定を使って,自分なりの色グラデーションを作る。</h3>
211
+
212
+
213
+ <p>静止画でもアニメーションでもよい.(colorHSV, backgroundHSV)</p>
214
+
215
+
216
+ ファイル名 kadai10a.rb
217
+ <pre syntax="ruby">
218
+ require 'sgl'
219
+ window 100,100
220
+ background 100
221
+
222
+ loop do
223
+ for h in 0..100
224
+ colorHSV h, 50, 100
225
+ rect 0, h, 100, h+5
226
+ flip
227
+ end
228
+ end
229
+ wait
230
+ </pre>
231
+
232
+ <ul>
233
+ <li>colorHSV(h, s, v) → hue, saturation, value</li>
234
+ <li>hue → 色調</li>
235
+ <li>saturation → どれだけ原色に近いか</li>
236
+ <li>value → 明るさ</li>
237
+ </ul>
238
+
239
+
240
+ <ul>
241
+ <li>4番目のパラメーターを使って,透明度を設定することもできる.</li>
242
+ <li>backgroundHSVというコマンドもある.</li>
243
+ </ul>
244
+
245
+
246
+ <h2>課題の注意点</h2>
247
+
248
+
249
+ <p>課題はいずれもwindowサイズなどは自由.課題例は100,100のサイズになって
250
+ いるが,より大きいwindowサイズを選択してもよい。</p>
251
+
252
+
253
+ <p>ファイル名は必ず指定のものにし,Z:に保存する.指定のファイル名のファイ
254
+ ルが保存されているかどうかで課題提出を判定する.ファイル名が違う場合は
255
+ 提出してないことになってしまうので,注意する.</p>
256
+ <p class="coda">
257
+ 19th June 2007<br>
258
+ </p>
259
+ </div>
260
+
261
+ <!-- insert site tracking codes here, like Google Urchin -->
262
+
263
+ </body>
264
+ </html>