tbasic forum
掲示板 => Tiny Basic for Windows => スレッド開設者: kikiriri より 2018年 7月 26日 , 午前 08:48:57
-
広場にも書いたんですが。
四角形の画き方がわかりません。
helpを見てもできませんでした。
-
出来ましたが
もっと、スマートな方法を教えてください。
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)
-
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文などの繰り返し文で
一気に書くように工夫してみましょう。
-
ご返信
ありがとうございました。
そーなんですよね、対角線の座標を与えれば、四角かけた記憶があるなと思ってました。
line文で書くのですね。
helpをもっと利用しなくちゃと思いました。
だけど、正方形が円に外接するように描けてとてもうれしかったですよ。
これからもよろしくお願いします。
あと円ですが、点の代わりになるものをと、小さくしながら、どのくらいの半径がちょうどいいか試行錯誤しました。
なので、半径を少しずつ小さくして、for文を用いるなんて発想として思い浮かびませんでした。
Pset文ではどうですか。
小さな点を大きな点にする方法ってありますか?
-
gscreen(640,320)
for r=0 to 125 step 5
circle(150,150),r,0
next r
line(25,25)-(275,275),5,b
だいぶシンプルでわかりやすくなりました。
ご助言ありがとうございました。
-
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文ですが、何とか見える、緑色の点が描けました。
色が、背景色と同じだったのかして。
今回は見える点が、描けました。
がんばったーーーーーーーーー
-
円を描きたいんですが
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
-
以下プログラムを修正したつもりなんですが。
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
-
極座標にすれば早そうですが。
今の自分では、すぐにはプログラムできません。
-
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
何も出てきません???
-
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
コメントの部分ができません???
-
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
-
グラフィック処理の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
ご教授お願いします。すみません。
-
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であまり変わりません。
-
pdf になってから、コピーアンドペーストができません。
なので、エラーとなっても気にせず。
その箇所が円を描くのに関係なければ、
削除しました。
でも後味が悪いですね。
すっきりしません。
-
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
-
広場にも書きましたが。
数値計算ではエンジニアとして、とんでもないミスをしました。
黄色い背景に黒い円が描かれます。について、正確には、黒い背景に円の中抜きのある黄色い塗りつぶしが描かれてます。
僕は、ある誤差範囲内で、円の方程式を満たせば、そこに点を打ち、要するに黄色い円が、黒い背景の中に描かれるようにプログラミングしたつもりです。
なのにこんな結果となり、うれしくなくはないんですが予期できなかった結果になりました。
本当にごめんなさい。
もう一度、見直してみます。
-
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
全然うまくいきません、ご助言お願いします。
-
僕がやりたいことを端的に述べると、円の方程式の解を、数値計算法で導き出すためには、x、y「ここでは、a,b」微小数増やして、
円の方程式に、代入して、その値が、方程式を満たす、数の、-0.1から+0.1までなら了承して、本来ならば0となるところですよね。
了承してその時の、(a,b)の、座標値の点を打ち込み表示させ、点線のような円を描くことです。stepを微小数にとって、やれば、連続の、
円の曲線になると思いやりましたが、だめでした。
模範解答を求む。すみません。
-
形式的なものですが、タイトルが馬鹿にしてないか、わからないのでこんなレスいれます。
よろしくお願いします。
-
竹内先生へ
ご多忙中を失礼します。
うまくいきません
以下プログラムです。
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
-
線分を引く練習、
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
-
このプログラムに、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
-
: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