新しく発言する EXIT インデックスへ
SETLINEWIDTH2で線が太くならない?

  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本線のあいだの塗りつぶしでなく、ペンの動きは連続した密な折れ線という方が正確ですね。
他のプログラム上のアイデアも研究して見ます。ありがとうございました。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。