Discuss Scratch

ayumunozomu
Scratcher
4 posts

100%penについて話し合う所

100%penのゲームを作るときに使う、「三平方の定理」の意味がよくわかりません。あたり判定を作るときに使うというのは知っているのですが、よく理解できません。なので「三平方の定理」を小学6年生でも理解できるように説明してくれませんか?「三平方の定理」の具体的な使い方も教えていただけると嬉しいです。
pupon
Scratcher
100+ posts

100%penについて話し合う所

>> #401
「三平方の定理」とは、
直角三角形の縦の辺のの長さと横のへんの長さから斜めの辺の長さを求めるもので、
([平方根 v] \( (((縦の長さ)*(縦の長さ))+((横の長さ)*(横の長さ))) \))
で求められます。
「なぜそうなるのかの証明」となると少し難しいので、「そうなるのだ」と理解しておいてください。
具体的な使い方ですが、二つの物体の座標から距離を求める時などに使います。
その場合は、縦の長さ=y座標の差 横の長さ=x座標の差 になります。
当たり判定をしたい時は、「二つの距離が〇〇より小さければ当たっている」のように使います。

Last edited by pupon (Feb. 23, 2023 06:01:27)


ここから下は署名です。
               
↑この線から下も署名です。(署名で遊びたかった)

・この「署名」以外でトピックの内容と関係ないことを書いてはいけません。
・トピックの内容は #1 などに書かれているため、#1は必ず読むようにしましょう。
プログラミング・数学・タイピング・謎解き・作曲・テトリス・ルービックキューブ・人工言語・モールス信号・数独が好きです。(多すぎる)
-Suriman-
Scratcher
30 posts

100%penについて話し合う所

図形を一番軽くペンで塗りつぶすには三角形に分けると言うのですが、具体的にどうやって計算したり塗りつぶしたりしているのでしょうか?
oligami
Scratcher
100+ posts

100%penについて話し合う所

#403

-Suriman- wrote:

図形を一番軽くペンで塗りつぶすには三角形に分けると言うのですが、具体的にどうやって計算したり塗りつぶしたりしているのでしょうか?
https://scratch.mit.edu/projects/608121375/
人それぞれです
scratchのペンのような形で効率的に塗りつぶす意味はscratchの人にしか意味がないので、みんなが独自に考えています。
あと、一番効率がいい! と理解した作品以上の仕組みを考えないとパクリになるから、数学やアルゴリズムができない人が自作は難しいです
よく使われる(私も使っている)アルゴリズムは内心を使ったものです。まぁ当然といえば当然。あとは三角形を組み合わせてスタンプや、一列ごとにペンで描く(透明度やテクスチャのため)ものがある。
三角形に分解する奴は自分で上の作品作っといて何ですが、忘れました

後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
-Suriman-
Scratcher
30 posts

100%penについて話し合う所

oligami wrote:

#403

-Suriman- wrote:

図形を一番軽くペンで塗りつぶすには三角形に分けると言うのですが、具体的にどうやって計算したり塗りつぶしたりしているのでしょうか?
https://scratch.mit.edu/projects/608121375/
人それぞれです
scratchのペンのような形で効率的に塗りつぶす意味はscratchの人にしか意味がないので、みんなが独自に考えています。
あと、一番効率がいい! と理解した作品以上の仕組みを考えないとパクリになるから、数学やアルゴリズムができない人が自作は難しいです
よく使われる(私も使っている)アルゴリズムは内心を使ったものです。まぁ当然といえば当然。あとは三角形を組み合わせてスタンプや、一列ごとにペンで描く(透明度やテクスチャのため)ものがある。
三角形に分解する奴は自分で上の作品作っといて何ですが、忘れました
教えていただきありがとうございます。
koudai1209
Scratcher
19 posts

100%penについて話し合う所

この右のプロジェクトで
ペンで画像を描くことが出来るようにするプロジェクトです
色を読み込むプログラムで
<(色) 色に触れた> まで繰り返す
[R] を ((0) から (225) までの乱数) にする
[G] を ((0) から (225) までの乱数) にする
[B] を ((0) から (225) までの乱数) にする
[色] を (((R) * (65536)) + (((G) * (256)) + (B))) にする
を使っています
これ以外に早く色を読み取れるプログラムはないですか?

これは署名です。
ディスカッションフォーラムの書き方(BBコード)↓

 ̰ ̰͇̰B̰͇̰B̰͇̰C̰͇̰o̰͇̰d̰͇̰ḛ͇̰の̰͇̰基̰͇̰本̰͇̰

͟ ͟͟͟文͟͟͟字͟͟͟列͟͟͟を͟͟͟扱͟͟͟う͟͟͟
[b]文字列[/b] 太字
[i]文字列[/i] 斜体
[u]文字列[/u] 下線
[s]文字列[/s] 取り消し線
[big]文字列[/big] 大きく(17px 通常は13px)[1]
[small]文字列[/small] 小さく(10px)[1]
[center]文字列[/center] 中央に表示

͟ ͟͟͟色͟͟͟を͟͟͟つ͟͟͟け͟͟͟る͟͟͟
[color=#888888]文字列[/color] 色をつける(16進数コード)
[color=red]文字列[/color] 色をつける(色名)

͟ ͟͟͟リ͟͟͟ン͟͟͟ク͟͟͟と͟͟͟画͟͟͟像͟͟͟
単純にURLを貼ってもリンクになるが、BBCodeを使うと表示文字列も自由にできる。New Scratcherは、Scratchウェブサイト外のリンクを貼ったり、
画像を挿入したりできない。(行うと、エラーになる)

リンク
[url=http://scratch.mit.edu/]リンク[/url] リンク
画像
[img]https://scratch.mit.edu/images/logo_sm.png[/img]
画像のリンクにはhttp:// または https:// を最初につけなければいけない。また、画像のホストの制限も適用され、限られたサイトの画像しか使え
ない。

                         by.scratch-wiki
























oligami
Scratcher
100+ posts

100%penについて話し合う所

#406

koudai1209 wrote:

この右のプロジェクトで
ペンで画像を描くことが出来るようにするプロジェクトです
色を読み込むプログラムで
<(色) 色に触れた> まで繰り返す
[R] を ((0) から (225) までの乱数) にする
[G] を ((0) から (225) までの乱数) にする
[B] を ((0) から (225) までの乱数) にする
[色] を (((R) * (65536)) + (((G) * (256)) + (B))) にする
を使っています
これ以外に早く色を読み取れるプログラムはないですか?
ありますというのは少し語弊がありますが、ランダム性がない上でとても速いものが存在します。scratchでは色の触れた判定をある程度大きな範囲で判定するので、それを用いたものが存在します。
https://scratch.mit.edu/projects/682904291/

元ネタはgriffpatchさんの
https://youtu.be/aBTh756kCZw
https://youtu.be/3lz1nylUHiY
辺りです。

後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
KimiruHamiru
New to Scratch
500+ posts

100%penについて話し合う所

koudai1209 wrote:

<中略>
ペンで画像を描くことが出来るようにするプロジェクトです
色を読み込むプログラムで
<(色) 色に触れた> まで繰り返す
[R] を ((0) から (225) までの乱数) にする
[G] を ((0) から (225) までの乱数) にする
[B] を ((0) から (225) までの乱数) にする
[色] を (((R) * (65536)) + (((G) * (256)) + (B))) にする
を使っています
これ以外に早く色を読み取れるプログラムはないですか?
oligami氏の指摘してるGriffpatch氏の動画は、ものすごい時間かけてでも、読み取るのがおすすめです。
そのまま使わなくても、考え方とかScratchの触れたブロックの仕様について、部分部分が参考になるかと思います。

その上で、

トンチ問題のような話ですが、目的
「ペンで画像を描くことが出来るようにする」
の部分、
つまり、
「やりたいのは描画。リスト上にデータを書きこむプログラムの部分は必要だから作っている、欲しいのはデータの方」
であれば、

Scratchじゃないプログラムで、画像を、Scratchのリスト向けの数値データ化する」
という選択肢もあります。
「Scratch使わないの反則」という意見もあるかと思いますが、
そもそも「利用する画像データはScratchで作ったものではない」と思うので、どこに線を引くかは考え方次第です。

試したことない、参考までに、ですが、私の知ってる物、知ってる環境だと「JavaScriptのCanvas API」辺りでやるのが楽かなという気がします。
「画像を描画する」機能

「描画されたもの(GPU上に展開された画像)を、配列(リスト)として取り出す」機能
といった、そのものずばりな機能が使えるはずなので、リスト向けのテキスト書き出し部分を含めてもせいぜい十数行のプログラムとして書けるかなと思います。
処理速度は、正確なことは言えませんが、Scratchを使う方法と比べれば超絶速いです。
書き出しのテキスト処理(textareaに書き出すとか)がボトルネックになると思いますが、それにしても1秒はかからないんじゃないかなと思います。
14345678
Scratcher
35 posts

100%penについて話し合う所

どんだけぐちゃぐちゃにしたくても乱数は使わない方がいいよ

((1) から (10) までの乱数)

ここから署名
最近何もなぁい( ´Д`)y━・~~

1 暇人
2 こう見えて結構サイトとか作れる
3 microbit持ってる(その情報いらねえ)
くらいかなあ
お友さんの141576

dengon-kun
Scratcher
15 posts

100%penについて話し合う所

みなさんすgp

dengon-kunです!
バイヤー高橋さんが好きな人はコメントして!
when green flag clicked
forever
私の作品をフォローして見る
end
Yunusuke
Scratcher
26 posts

100%penについて話し合う所

100%PENって何個ぐらいブロックを使うのですか?
同じ質問があったらごめんなさい。

Last edited by Yunusuke (May 28, 2023 04:05:38)


これを見ろ
when green flag clicked
[scratchblocks]
forever
repeat (Yunusuke)
set pen color to [#fd91d9]

end
end
[/scratchblocks]
oligami
Scratcher
100+ posts

100%penについて話し合う所

#411

Yunusuke wrote:

100%PENって何個ぐらいブロックを使うのですか?
同じ質問があったらごめんなさい。

どうも!Yunusukeです!
サブアカウントは持っていません。
3Dゲームだと、覚えている限りで一番少ないのは300ちょいです。ソースはないです

100%PENってだけならペンで線引くだけだから数ブロック?

Last edited by oligami (May 27, 2023 15:04:49)


後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
roketo09
Scratcher
100+ posts

100%penについて話し合う所

よけるゲーム作るなら数10個で終わります。
(今作成中)

人の心は発言では動かない
人の心を動かすのは行動

byあめんぼぷらす 監督 ホイ助
Jinanbou
Scratcher
35 posts

100%penについて話し合う所

急にすみません。
3Dをpenで作るときに奥にある線を先に書こうと思ったら計算はどんなふうになるかわかる人いますか?
また、奥の面を先に塗りつぶす場合の計算がわかる人はいますか?
一応ある程度トピックを眺めたのですが400以上あったので全部は見れてないかも知れないですが、もう回答済みであれば申し訳ありませんが、トピックの番号を教えてもらえると嬉しいです。

逆翻訳とアニメとゲームの完全再現とスクリプト演奏と絵を描くことととにかく楽しいことが好きな人です(多すぎる)
ただどれも著作権に密接なものが多いのが怖いJinanbouです。ちなみに私の著作物はクレジットをすれば基本自由です。「適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。(私の場合はここが1番気にします)これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。でも悪いことには使わないでね。(これ重要。テストか夢に出るよ)
yukiscratch44
Scratcher
7 posts

100%penについて話し合う所

Jinanbou wrote:

急にすみません。
3Dをpenで作るときに奥にある線を先に書こうと思ったら計算はどんなふうになるかわかる人いますか?
また、奥の面を先に塗りつぶす場合の計算がわかる人はいますか?
一応ある程度トピックを眺めたのですが400以上あったので全部は見れてないかも知れないですが、もう回答済みであれば申し訳ありませんが、トピックの番号を教えてもらえると嬉しいです。
そのように書くには、ソートのプログラムが必要です。ソートのwiki:データの並び替え(クイックソート)ソートの中で早いのはクイックソートなので、クイックソートを使うといいと思います。
僕はあまりソートについては詳しくないですが、wikiを参考にしたらいいと思います。

Last edited by yukiscratch44 (June 22, 2023 00:20:03)


※ここから下は著名です!

⬆近日公開!
Jinanbou
Scratcher
35 posts

100%penについて話し合う所

yukiscratch44 wrote:

Jinanbou wrote:

急にすみません。
3Dをpenで作るときに奥にある線を先に書こうと思ったら計算はどんなふうになるかわかる人いますか?
また、奥の面を先に塗りつぶす場合の計算がわかる人はいますか?
一応ある程度トピックを眺めたのですが400以上あったので全部は見れてないかも知れないですが、もう回答済みであれば申し訳ありませんが、トピックの番号を教えてもらえると嬉しいです。
そのように書くには、ソートのプログラムが必要です。ソートのwiki:データの並び替え(クイックソート)ソートの中で早いのはクイックソートなので、クイックソートを使うといいと思います。
僕はあまりソートについては詳しくないですが、wikiを参考にしたらいいと思います。
ソートに関してはわかるのですが、距離を測る方法がわからないのです。

逆翻訳とアニメとゲームの完全再現とスクリプト演奏と絵を描くことととにかく楽しいことが好きな人です(多すぎる)
ただどれも著作権に密接なものが多いのが怖いJinanbouです。ちなみに私の著作物はクレジットをすれば基本自由です。「適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。(私の場合はここが1番気にします)これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。でも悪いことには使わないでね。(これ重要。テストか夢に出るよ)
oligami
Scratcher
100+ posts

100%penについて話し合う所

#416

Jinanbou wrote:

yukiscratch44 wrote:

Jinanbou wrote:

急にすみません。
3Dをpenで作るときに奥にある線を先に書こうと思ったら計算はどんなふうになるかわかる人いますか?
また、奥の面を先に塗りつぶす場合の計算がわかる人はいますか?
一応ある程度トピックを眺めたのですが400以上あったので全部は見れてないかも知れないですが、もう回答済みであれば申し訳ありませんが、トピックの番号を教えてもらえると嬉しいです。
そのように書くには、ソートのプログラムが必要です。ソートのwiki:データの並び替え(クイックソート)ソートの中で早いのはクイックソートなので、クイックソートを使うといいと思います。
僕はあまりソートについては詳しくないですが、wikiを参考にしたらいいと思います。
ソートに関してはわかるのですが、距離を測る方法がわからないのです。
z-ソート法では、どう距離を測っても完ぺきにというわけには行きません。
よくある方法は重心、一番奥の点(z軸)、一番手前の点(z軸) ですね。

後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
KimiruHamiru
New to Scratch
500+ posts

100%penについて話し合う所

Jinanbou wrote:

3Dをpenで作るときに奥にある線を先に書こうと思ったら計算はどんなふうになるかわかる人いますか?
また、奥の面を先に塗りつぶす場合の計算がわかる人はいますか?
座標の決め方にもよりますが、

z=0 と z=10 では、z=10 の方が、画面の奥にある

とする、と決めた場合で、


線1)
線の始点:x=0, y=0, z=0
線の終点:x=0, y=100, z=0

線2)
線の始点:x=0, y=0, z=10
線の終点:x=0, y=100, z=10

の線を両方画面に描こうとするとき、


先に描きたいのは、「線2」の方ですよね。(z=10の方が「画面の奥」にあると最初に決めたので)。

この2本の線の場合、「zの値のどっちが大きいか小さいか比べる」ことで、「どっちを先に描きたいか」考える事ができる、と言えるんじゃないでしょうか。(この例だとぴったり重なって奥の線は見えなくなりそうですが)

yukiscratch44さんのいうソートの話は、このz座標でソートする、という話です。

という辺りで話を止めて、実際にコードを書きはじめてみると「結構うまく行く(どこかうまくいかないけど、そこそこうまくいく)」ことが確認できるかなと思います。

描きたい線が、都合よく「画面の面と平行」ではない(=始点と終点でzの値が違う場合)など、条件が複雑になってくると、「どっちが先」というのは、話が複雑になってきます。
というのがoligamiさんの話で、「始点と終点のうち、奥の点のz座標、あるいは、手前の点のz座標、どっちか決めちゃって、それを比較に使おう」とか「その間のあたりの値にしてみよう」とか考えるわけですが、

極端な所では、たとえば
「画面上でX字に交わる2本の線、たとえば赤い線と青い線」
を、
「壁をぱたんと奥に倒すように90度回転」させたら、どう見えるか、

と言えば、「半分赤くて半分青い直線」になるかと思います。
つまりは、どっちを先に描いても、期待した絵にはなりません
「どっちが奥」とか「どっちを先に描く」とかいう言葉の意味が、単純でなくなってきます。
線じゃなく三角形とかの場合、「どっちが手前?どっちが奥?どう見える?」という話は、爆発的に複雑になってきます。
「どう距離を測っても完ぺきには」というのはそういう話です。

という辺りまで再確認したら、あとは自力で考えられる(条件を整えればそれほど難しくないとか、条件を整えない場合描画順で解決できる問題ではなくなるから、どう条件を整えるべきか、とかいったことが見えてくる)かなという気もします。

ともあれ、いずれにせよきっちりやるのは「けっこうたいへん」です。
厳密にやればやるほど計算量(要は重さ)がシビアになってくるので、実際動かしてみないとどの程度ツッコミを入れるべきか判断できるものでもないと思います。
奥の物が手前に見えてもいいので、実際にコードを書いて動かして、そこそこの結果が得られてから、どう修正していくか考える、というのが良いかなと思います。

Jinanbou wrote:

もう回答済みであれば申し訳ありませんが、トピックの番号を教えてもらえると嬉しいです。
については、最近だと、3Dのトピックの
https://scratch.mit.edu/discuss/topic/372004/?page=9#post-7200728
とか、そのもうちょっと前の
https://scratch.mit.edu/discuss/topic/598741/?page=390#post-7146274
で似た話題がありました。
shigaken1872
Scratcher
13 posts

100%penについて話し合う所

100%ペンって、ペンだから、どきることがあるんじゃないか。
Pikurinさんの100%pen時計はすごいです。
[ v] キーが押されたとき



いいね!!
111yu123456
Scratcher
28 posts

100%penについて話し合う所

https://scratch.mit.edu/projects/876017191/
100%ペンで時計を作りましたがタイマーの部分の当たり判定がイマイチなんですけどどうすればいいと思いますか?
小学生なのでわかりやすく教えてもらうと助かります
上は「どきる」ではなく
「できる」ではないですか?

Last edited by 111yu123456 (July 21, 2023 23:51:44)

Powered by DjangoBB