SET LINE WIDTH 2で線が太くならない? zyam56 2006/11/02 04:41:31 ├1点として描いているから!? 山中和義 2006/11/02 07:39:48 └1点として描かないように!したもの。 GENAN 2006/11/03 05:11:20 └ありがとうございます。 zyam56 2006/11/03 06:22:24 └!xbも使おう・・速いぞ!? SECOND 2006/11/03 13:08:55 └!xbも使おう・・こっちが見やすい。 SECOND 2006/11/03 14:04:03 └なるほど、プロッタのペンを下ろしっぱなし... zyam56 2006/11/04 07:20:08 ├!「ペンが点でなく、方向が生まれる・・」O... SECOND 2006/11/04 13:59:20 └以下の様な文で、プロットすると中心点が SECOND 2006/11/04 18:13:40 └そうですね、2本線のあいだの塗りつぶしで... zyam56 2006/11/04 23:02:34
SET LINE WIDTH 2で線が太くならない? zyam56 2006/11/02 04:41:31 ツリーへ
SET LINE WIDTH 2で線が太くならない? |
返事を書く |
zyam56 2006/11/02 04:41:31 | |
以下のプログラムで2次関数のyの値の変化を強調して示したいのでy軸上を移動する赤い線を標準の2倍の太さにしたいのですが太くなりません。
ヘルプを見ましたが原因がわかりません。 10 REM**********2次関数のグラフを描く********** 20 SET WINDOW -4,6,-4,20 30 DRAW GRID 40 REM************************************** 50 DEF f(x)=a*x^2 60 INPUT PROMPT"放物線の比例定数":a 70 DEF h(x)=0 80 DEF g(y)=f(x) 90 FOR X=-2 TO 4 STEP 0.0002 100 SET LINE COLOR "black" 110 PLOT LINES: x,f(x) 120 SET LINE COLOR "blue" 130 PLOT LINES:x,h(0) 140 SET LINE COLOR "red" 150 SET LINE WIDTH 2 160 SET LINE STYLE 4 170 PLOT LINES :y,g(y) 180 NEXT x 190 END |
├1点として描いているから!? 山中和義 2006/11/02 07:39:48 ツリーへ
Re: SET LINE WIDTH 2で線が太くならない? |
返事を書く |
山中和義 2006/11/02 07:39:48 | |
1点として描いているから!?
PLOT LINES :y,g(y)だと1点描画になります。 線幅を考える場合、線方向(線が延びる方向)を考慮して幅が付きます。 点の場合、その方向が不定なため幅を付けることができません。 したがって、この部分は線分描画にする必要があります。 PLOT LINES :y,g(y); y,g(y)では、始点と終点が同一のため、これも1点描画になります。 170 PLOT LINES :0,f(x); 0,f(x)+0.01 Y軸(縦方向)固定なら 170 PLOT LINES :0,f(x); 0.01,f(x) も可能です。 ※0.01は調整する必要あり。 |
└1点として描かないように!したもの。 GENAN 2006/11/03 05:11:20 ツリーへ
Re: SET LINE WIDTH 2で線が太くならない? |
返事を書く |
GENAN 2006/11/03 05:11:20 | |
1点として描かないように!したもの。
10 REM**********2次関数のグラフを描く********** 20 SET WINDOW -4,6,-4,20 30 DRAW GRID 40 REM************************************** 50 DEF f(x)=a*x^2 60 INPUT PROMPT"放物線の比例定数":a 70 ! 80 ! LET xb=-2 90 FOR X=-2 TO 4 STEP 0.1 100 SET LINE COLOR "black" 110 PLOT LINES: xb,f(xb) ; x,f(x) 120 SET LINE COLOR "blue" 130 PLOT LINES: xb,0 ; x,0 140 SET LINE COLOR "red" 150 SET LINE WIDTH 2 160 ! 170 PLOT LINES: 0,f(xb) ; 0,f(x) SET LINE WIDTH 1 LET xb=x 180 NEXT x 190 END |
└ありがとうございます。 zyam56 2006/11/03 06:22:24 ツリーへ
Re: 1点として描かないように!したもの。 |
返事を書く |
zyam56 2006/11/03 06:22:24 | |
ありがとうございます。
山中さんに教えていただいものを参考に以下のように書きました。 **************************************************** 10 REM**2次関数のグラフを描き1次関数との違いを見る**** 20 SET WINDOW -4,6,-10,20 30 DRAW GRID 40 REM************************************** 50 DEF e(x)=b*x+c 60 DEF f(x)=a*x^2 70 INPUT PROMPT"放物線の比例定数":a 80 INPUT PROMPT"直線の傾き":b 90 INPUT PROMPT"直線のy軸切片":c 100 DEF g(x)=0 110 DEF y=f(x) 120 DEF z=e(x) 130 FOR x=-2 TO 4 STEP 0.0002 135 SET LINE width 3 140 SET LINE COLOR "black" 150 PLOT LINES:x,e(x);x+0.01,e(x) 160 PLOT LINES:x,f(x);x+0.01,f(x) 170 SET LINE COLOR "blue" 180 PLOT LINES:x,g(x);x,g(x)+0.04 190 SET LINE COLOR "red" 195 IF x>0 THEN GOTO 210 200 PLOT LINES :0-0.06,y;0-0.04,y 210 IF x>0 THEN GOTO 220 ELSE GOTO 240 220 SET LINE COLOR "red" 230 PLOT LINES :0+0.06,y;0+0.08,y 240 SET LINE COLOR "GREEN" 250 PLOT LINES :0,z;0+0.01,z 260 NEXT x 270 PLOT TEXT ,AT 1,-2 :"放物線の比例定数は、"&STR$(a) 271 PLOT TEXT ,AT 1,-3 :"直線の比例定数は、"&STR$(b) 272 PLOT TEXT ,AT 1,-4 :"直線のy軸切片は、"&STR$(c) 280 END |
└!xbも使おう・・速いぞ!? SECOND 2006/11/03 13:08:55 ツリーへ
Re: ありがとうございます。 |
返事を書く |
SECOND 2006/11/03 13:08:55 | |
! xb も使おう・・速いぞ!?
!**************************************************** 10 REM**2次関数のグラフを描き1次関数との違いを見る**** 20 SET WINDOW -4,6,-10,20 30 DRAW GRID 40 REM************************************** 50 DEF e(x)=b*x+c 60 DEF f(x)=a*x^2 70 INPUT PROMPT"放物線の比例定数":a 80 INPUT PROMPT"直線の傾き":b 90 INPUT PROMPT"直線のy軸切片":c 100 DEF g(x)=0 110 DEF y=f(x) 120 DEF z=e(x) !----- LET xb=-2 LET yb=f(xb) LET zb=e(xb) !----- 130 FOR x= xb TO 4 STEP 0.1 135 SET LINE width 3 140 SET LINE COLOR "black" 150 PLOT LINES:xb,e(xb);x,e(x) 160 PLOT LINES:xb,f(xb);x,f(x) 170 SET LINE COLOR "blue" 180 PLOT LINES:xb,g(xb);x,g(x) 190 SET LINE COLOR "red" 195 IF x>0 THEN 230 200 PLOT LINES :-0.05,yb;-0.05,y 210 GOTO 240 220 ! 230 PLOT LINES :+0.05,yb;+0.05,y 240 SET LINE COLOR "GREEN" 250 PLOT LINES :0,zb;0,z !----- LET xb=x LET yb=y LET zb=z !----- 260 NEXT x 270 PLOT TEXT ,AT 1,-2 :"放物線の比例定数は、"&STR$(a) 271 PLOT TEXT ,AT 1,-3 :"直線の比例定数は、"&STR$(b) 272 PLOT TEXT ,AT 1,-4 :"直線のy軸切片は、"&STR$(c) 280 END |
└!xbも使おう・・こっちが見やすい。 SECOND 2006/11/03 14:04:03 ツリーへ
Re: !xbも使おう・・速いぞ!? |
返事を書く |
SECOND 2006/11/03 14:04:03 | |
! xb も使おう・・こっちが見やすい。
!**************************************************** 10 REM**2次関数のグラフを描き1次関数との違いを見る**** 20 SET WINDOW -4,6,-10,20 30 DRAW GRID 40 REM************************************** 50 DEF e(x)=b*x+c 60 DEF f(x)=a*x^2 70 INPUT PROMPT"放物線の比例定数":a 80 INPUT PROMPT"直線の傾き":b 90 INPUT PROMPT"直線のy軸切片":c 100 DEF g(x)=0 110 DEF y=f(x) 120 DEF z=e(x) !----- LET x=-2 LET xb=x LET yb=y LET zb=z !----- 130 FOR x= x TO 4 STEP 0.1 135 SET LINE width 3 140 SET LINE COLOR "black" 150 PLOT LINES:xb,e(xb);x,e(x) 160 PLOT LINES:xb,f(xb);x,f(x) 170 SET LINE COLOR "blue" 180 PLOT LINES:xb,g(xb);x,g(x) 190 SET LINE COLOR "red" 195 IF x>0 THEN 230 200 PLOT LINES :-0.05,yb;-0.05,y 210 GOTO 240 220 ! 230 PLOT LINES :+0.05,yb;+0.05,y 240 SET LINE COLOR "GREEN" 250 PLOT LINES :0,zb;0,z !----- LET xb=x LET yb=y LET zb=z !----- 260 NEXT x 270 PLOT TEXT ,AT 1,-2 :"放物線の比例定数は、"&STR$(a) 271 PLOT TEXT ,AT 1,-3 :"直線の比例定数は、"&STR$(b) 272 PLOT TEXT ,AT 1,-4 :"直線のy軸切片は、"&STR$(c) 280 END |
└なるほど、プロッタのペンを下ろしっぱなし... zyam56 2006/11/04 07:20:08 ツリーへ
Re: !xbも使おう・・こっちが見やすい。 |
返事を書く |
zyam56 2006/11/04 07:20:08 | |
なるほど、プロッタのペンを下ろしっぱなしにして細い2本の線幅
いっぱいに塗りつぶしていくということですね。これですとペンが 点でなく、方向が生まれるので set line width * がはたらくというわけですね。 |
├!「ペンが点でなく、方向が生まれる・・」O... SECOND 2006/11/04 13:59:20 ツリーへ
Re: なるほど、プロッタのペンを下ろしっぱなし... |
返事を書く |
SECOND 2006/11/04 13:59:20 | |
!「ペンが点でなく、方向が生まれる・・」OK!
!ただ、線は2本でなく、1本の線です。(折れ線グラフ) ! !例えば、これを走らせて見て下さい。 !線幅1と3が混じっています。 !上書きされて不愉快でしょうが、この方が、解りやすい? ! ! LINE プロットの場合は、前回の点から線を描く(直線補間) ! POINTS プロットの場合と異なり、前回の記憶が必要。 !**************************************************** 10 REM**2次関数のグラフを描き1次関数との違いを見る**** 20 SET WINDOW -4,6,-10,20 30 DRAW GRID 40 REM************************************** 50 DEF e(x)=b*x+c 60 DEF f(x)=a*x^2 70 INPUT PROMPT"放物線の比例定数":a 80 INPUT PROMPT"直線の傾き":b 90 INPUT PROMPT"直線のy軸切片":c 100 DEF g(x)=0 110 DEF y=f(x) 120 DEF z=e(x) !----- LET x=-2 LET xb=x LET yb=y LET zb=z !----- 130 FOR x= x TO 4 STEP 0.1 135 SET LINE width 1 140 SET LINE COLOR "black" 150 PLOT LINES:xb,zb ;x,z 160 PLOT LINES:xb,yb ;x,y 170 SET LINE COLOR "blue" 180 PLOT LINES:xb,g(xb) ;x,g(x) SET LINE width 3 190 SET LINE COLOR "red" 195 IF x>0 THEN 230 200 PLOT LINES :-0.06,yb ;-0.06,y 210 GOTO 240 220 ! 230 PLOT LINES :+0.05,yb ;+0.05,y 240 SET LINE COLOR "GREEN" 250 PLOT LINES :0,zb ;0,z !----- LET xb=x LET yb=y LET zb=z !----- 260 NEXT x 270 PLOT TEXT ,AT 1,-2 :"放物線の比例定数は、"&STR$(a) 271 PLOT TEXT ,AT 1,-3 :"直線の比例定数は、"&STR$(b) 272 PLOT TEXT ,AT 1,-4 :"直線のy軸切片は、"&STR$(c) 280 END |
└以下の様な文で、プロットすると中心点が SECOND 2006/11/04 18:13:40 ツリーへ
Re: なるほど、プロッタのペンを下ろしっぱなし... |
返事を書く |
SECOND 2006/11/04 18:13:40 | |
以下の様な文で、プロットすると中心点が
(x,f(x))に対して(+0.005,+0.005)に外れてしまいます。 SET LINE width 3 PLOT LINES:x,f(x) ;x+0.01,f(x)+0.01 本来は、POINTS で点の大きさが変えられると良いのですが、 次の文では、点のマークが選べるだけです。 SET POINT STYLE 1~5( ・ + * ○ × ) PLOT POINTS:x,f(x) 苦肉の策として、 SET LINE width 3 PLOT LINES:x-0.005,f(x) ;x+0.005,f(x) PLOT LINES:x,f(x)-0.005 ;x,f(x)+0.005 又は、PLOT LINES:x-0.005,f(x)-0.005 ;x+0.005,f(x)+0.005 とすれば、中心ずれば防げますが、計算機の負担です。 本来のLINEプロットとして、太い線にしたいときは 折れ線グラフにする事をお奨めします。 ステップは、粗くても十分な精度と速度で、wait などでの調節の余裕が出ます。 最初の old_x,old_y だけ適当に初期設定して、次の文を繰り返します。 SET LINE width 3 PLOT LINES:old_x,old_y ;new_x,new_y LET old_x=new_x LET old_y=new_y 最初の1回 だけ old_x,old_y のセーブだけで描画を飛ばし、 2回目以降で描かれる方法など・・。 10 IF saisyo=1 THEN 40 20 SET LINE width 3 30 PLOT LINES:old_x,old_y ;new_x,new_y 40 LET old_x=new_x 50 LET old_y=new_y |
└そうですね、2本線のあいだの塗りつぶしで... zyam56 2006/11/04 23:02:34 ツリーへ
Re: 以下の様な文で、プロットすると中心点が |
返事を書く |
zyam56 2006/11/04 23:02:34 | |
そうですね、2本線のあいだの塗りつぶしでなく、ペンの動きは連続した密な折れ線という方が正確ですね。
他のプログラム上のアイデアも研究して見ます。ありがとうございました。 |