tbasic forum

掲示板 => Tiny Basic for Windows => スレッド開設者: kikiriri より 2018年 7月 26日 , 午前 08:48:57

スレッド名: 四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 26日 , 午前 08:48:57
広場にも書いたんですが。
四角形の画き方がわかりません。
helpを見てもできませんでした。
スレッド名: Re:四角形の画き方教えて
投稿者: ヤッホー より 2018年 7月 26日 , 午後 05:15:27
出来ましたが
もっと、スマートな方法を教えてください。

gscreen(640,320)

circle(150,150),125,0

circle(150,150),62.5,2

circle(150,150),31.25,4

circle(150,150),15.625,6

line(150,150)-(275,150),8

line(150,150)-(150,275),10

circle(150,150),6,12

circle(150,150),3,16

circle(150,150),1.5,0


line(25,25)-(275,25)
line(25,25)-(25,275)
line(275,275)-(25,275)
line(275,275)-(275,25)
スレッド名: Re:四角形の画き方教えて
投稿者: takeuchi より 2018年 7月 26日 , 午後 10:32:18
Line (x1,y1)-(x2,y2),,B
で四角形が書けます。「BASIC入門」-「グラフィック操作」18ページに書いてあります。
Help の Line の項目にも説明があります。

line(25,25)-(275,25)
line(25,25)-(25,275)
line(275,275)-(25,275)
line(275,275)-(275,25)

は,
line(25,25)-(275,275),,B
で実現されます。

それから,
circle(150,150),125,0
circle(150,150),62.5,2
circle(150,150),31.25,4
circle(150,150),15.625,6
circle(150,150),6,12
circle(150,150),3,16
circle(150,150),1.5,0

のように似た命令が並んでいるときは, 適当な変数を導入してFor文などの繰り返し文で
一気に書くように工夫してみましょう。
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 27日 , 午前 08:14:00
ご返信

ありがとうございました。

そーなんですよね、対角線の座標を与えれば、四角かけた記憶があるなと思ってました。

line文で書くのですね。

helpをもっと利用しなくちゃと思いました。

だけど、正方形が円に外接するように描けてとてもうれしかったですよ。

これからもよろしくお願いします。

あと円ですが、点の代わりになるものをと、小さくしながら、どのくらいの半径がちょうどいいか試行錯誤しました。

なので、半径を少しずつ小さくして、for文を用いるなんて発想として思い浮かびませんでした。

Pset文ではどうですか。

小さな点を大きな点にする方法ってありますか?

スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 27日 , 午前 08:41:07
gscreen(640,320)

for r=0 to 125 step 5

circle(150,150),r,0

next r

line(25,25)-(275,275),5,b

だいぶシンプルでわかりやすくなりました。

ご助言ありがとうございました。
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午前 08:32:28
gscreen(640,320)

for r=0 to 125 step 5

circle(150,150),r,0

next r

line(25,25)-(275,275),5,b

pset(150,150),2

pset文ですが、何とか見える、緑色の点が描けました。

色が、背景色と同じだったのかして。

今回は見える点が、描けました。

がんばったーーーーーーーーー
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 12:05:09
円を描きたいんですが

pset文で、以下の、プログラムを書きましたが。

エラーとなり、だめです。

ご助言お願いします。

ここがおかしいよ、とか、これはこういうエラーだから、もう少し考え直せなど。

よろしくお願いします。

以下プログラム


gscreen(640,320)

a=0

b=0

for a=0 to 275 step0.000001

 for b=0 to 275 step0.000001

(a-150)^2+(b-150)^2=125^2

 

 next y

next x

pset(x,y),3
 
end
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 12:44:19
以下プログラムを修正したつもりなんですが。
gscreenは出ますが、あとなにも現れません。

ご助言お願いします。

gscreen(640,320)

a=0

b=0

for a=0 to 275 step 0.000001

 for b=0 to 275 step 0.000001

a=sqr(125^2-(25-150)^2)+150

b=sqr(125^2-(25-150)^2)+150

pset (a,b),12 

 next b

next a


 
end
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 12:53:06
極座標にすれば早そうですが。

今の自分では、すぐにはプログラムできません。

スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 01:15:00
if文で工夫しますね!!

gscreen(640,320)

a=0

b=0

for a=0 to 275 step0.000001

 for b=0 to 275 step0.000001

if (a-150)^2+(b-150)^2=125^2 then pset(a,b),14

 

 next b

next a


 
end


何も出てきません???
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 01:38:57
gscreen(640,320)

x=0

y=0

for x=0 to 275 step0.000001

 for y=0 to 275 step0.000001

if (x-150)^2+(y-150)^2=125^2 'xとyが円の方程式を満たせば(真ならば座標に点を打つ、偽ならば for next ループに戻る)

then pset(x,y),4 else next x next y

 

   

 next y

next x


 
end


コメントの部分ができません???
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 01:40:35
gscreen(640,320)

x=0

y=0

for x=0 to 275 step0.000001

 for y=0 to 275 step0.000001

if (x-150)^2+(y-150)^2=125^2 'xとyが円の方程式を満たせば(真ならば座標に点を打つ、偽ならば for next ループに戻る)

then pset(x,y),4 else next x ; next y

 

   

 next y

next x


 
end
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 02:39:33
グラフィック処理の19ページを学習中

問題は、sin cos で円周上の点をどう打つか思い出せるかどうかです。
半径rの円周上の点は、r sin θ r cos θ θを細かく代入して書かせてもらいます。

n=3

for n=3 to 3000

gbackcolor="Black"
gscreen (300,300)
Window (-2,-2)-(2,2)
MathGraph On
GForceColor = "#555555"
Circle(0,0),1
ForeColor = "White"
For i=0 to n-1
   x0=Cos(2*Pi*i/n)
   y0=Sin(2*Pi*i/n)
   x1=Cos(2*Pi*(i+1)/n)
   y1=Sin(2*Pi*(i+1)/n)
   Line (x0,y0)-(x1,y1)
next i

next n

End


多角形をたくさん書いて、円にしようとしたが無理でした。

エラー

Tiny Basic for Windows Ver. 1.239(May 10, 2018) On Windows 7
OK
エラー:Block 文が正しくありません。FOR文に対応する文がありません。(1行, 1 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(7行, 14 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(7行, 14 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(7行, 14 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(7行, 14 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(9行, 14 桁)
OK

エラー:コマンド LET の実行で型の不一致が起きました。(9行, 14 桁)
OK




ご教授お願いします。すみません。
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 03:16:00
n=5
GBackColor="Black"
GScreen(300,300)
Window (-2,-2)-(2,2)
MathGraph On
'GForeColor = "Cyan"
'Line (-2,0)-(2.0)
'Line (0,-2)-(0,2)
'GForeColor = "#555555"
Circle(0,0),1
ForeColor = "White"
For i=0 to n-1
   x0=Cos(2*Pi*i/n)
   y0=Sin(2*Pi*i/n)
   x1=Cos(2*Pi*(i+1)/n)
   y1=Sin(2*Pi*(i+1)/n)
   Line (x0,y0)-(x1,y1)
Next i
End
成功したが、x軸、y軸表示されず。
エラーです。
これから、nの値を、大きくして、円に、近づけたいです。

n=6000
GBackColor="Black"
GScreen(300,300)
Window (-2,-2)-(2,2)
MathGraph On
'GForeColor = "Cyan"
'Line (-2,0)-(2.0)
'Line (0,-2)-(0,2)
'GForeColor = "#555555"
Circle(0,0),1
ForeColor = "White"
For i=0 to n-1
   x0=Cos(2*Pi*i/n)
   y0=Sin(2*Pi*i/n)
   x1=Cos(2*Pi*(i+1)/n)
   y1=Sin(2*Pi*(i+1)/n)
   Line (x0,y0)-(x1,y1)
Next i
End

n=600とn=6000であまり変わりません。





スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 03:18:45
pdf になってから、コピーアンドペーストができません。

なので、エラーとなっても気にせず。
その箇所が円を描くのに関係なければ、
削除しました。

でも後味が悪いですね。


すっきりしません。
スレッド名: Re:四角形の画き方教えて 偶然の産物
投稿者: kikiriri より 2018年 7月 29日 , 午後 05:12:39
gscreen(640,320)

a=0

b=0

for a=0 to 300 step 0.8

 for b=0 to 300 step 0.8

if 0.1=<(a-150)^2+(b-150)^2-125^2 or 0.2>=(a-150)^2+(b-150)^2 then pset(a,b),14

 

 next b

next a


 
end
スレッド名: Re:四角形の画き方教えて 偶然の産物「エラーマンあらわる」
投稿者: kikiriri より 2018年 7月 29日 , 午後 06:04:44
広場にも書きましたが。
数値計算ではエンジニアとして、とんでもないミスをしました。


黄色い背景に黒い円が描かれます。について、正確には、黒い背景に円の中抜きのある黄色い塗りつぶしが描かれてます。
僕は、ある誤差範囲内で、円の方程式を満たせば、そこに点を打ち、要するに黄色い円が、黒い背景の中に描かれるようにプログラミングしたつもりです。
なのにこんな結果となり、うれしくなくはないんですが予期できなかった結果になりました。
本当にごめんなさい。
もう一度、見直してみます。
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 07:19:22
gscreen(1000,700)

a=0

b=0

for a=0 to 640 step 0.8

 

if -0.001=<(a-150)^2+(b-150)^2-125^2 or 0.001>=(a-150)^2+(b-150)^2-125^2 then pset(a,b),14

next a

for b=0 to 320 step 0.8

if -0.001=<(a-150)^2+(b-150)^2-125^2 or 0.001>=(a-150)^2+(b-150)^2-125^2 then pset(a,b),14

 next b

 


 
end



全然うまくいきません、ご助言お願いします。
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 29日 , 午後 07:29:34
僕がやりたいことを端的に述べると、円の方程式の解を、数値計算法で導き出すためには、x、y「ここでは、a,b」微小数増やして、
円の方程式に、代入して、その値が、方程式を満たす、数の、-0.1から+0.1までなら了承して、本来ならば0となるところですよね。
了承してその時の、(a,b)の、座標値の点を打ち込み表示させ、点線のような円を描くことです。stepを微小数にとって、やれば、連続の、
円の曲線になると思いやりましたが、だめでした。


模範解答を求む。すみません。
スレッド名: ご助言お願いします
投稿者: kikiriri より 2018年 7月 29日 , 午後 07:34:32
形式的なものですが、タイトルが馬鹿にしてないか、わからないのでこんなレスいれます。

よろしくお願いします。
スレッド名: ご助言お願いします
投稿者: kikiriri より 2018年 7月 30日 , 午前 08:52:32
竹内先生へ

 ご多忙中を失礼します。


うまくいきません

以下プログラムです。


open gscreen(640,320)

let x = 0

let y = 0

 for x = 0 to 275 step 0.5

if -0.5=<(x-150)^2+(0-150)^2<=0.5

then pset(x,0),14:endif

 next x

 for y = 0 to 275 step 0.5

if  -0.5=<(0-150)^2+(y-150)^2<=0.5

then pset(0,y),14: endif

 next y
 
end


スレッド名: Re:四角形の画き方教えて; 線分から始めました。
投稿者: kikiriri より 2018年 7月 31日 , 午後 05:01:32
線分を引く練習、

step 1で見事に描けました。

自分には円は難しいのかな?

竹内先生ありがとうございます。

僕の勘違いというかここから始めるべきでしたね。


gscreen (400,400)
window (-200,-200)-(200,200)
a=0:b=0
for a=-200 to 200 step 1
 c=a
 pset (a,c)
next a

end
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 31日 , 午後 06:48:10
このプログラムに、bという変数は出ないので、

a=0:b=0

の中の、

":b=0" を、

削除しました。



gscreen (400,400)
window (-200,-200)-(200,200)
a=0
for a=-200 to 200 step 1
 c=a
 pset (a,c)
next a

end
スレッド名: Re:四角形の画き方教えて
投稿者: kikiriri より 2018年 7月 31日 , 午後 06:51:01
:b=0

の代わりに、

:c=0を加えて、

3行目を、

"a=0:c=0"としました。 すみません。


gscreen (400,400)
window (-200,-200)-(200,200)
a=0:c=0
for a=-200 to 200 step 1
 c=a
 pset (a,c)
next a

end