Discuss Scratch

ryusei1010
Scratcher
29 posts

Scratch数学カフェ

前回は場違いなことをしてしまい誠に申し訳ございませんでした。
勉強の休憩時間に求めた√2022と√2023と√2024と√2025↓
√2022=44.966655 √2023=44.977773 √2024=44.988888 √2025=45
手動で求める前の基準として√2025は出ました。

Last edited by ryusei1010 (Dec. 29, 2022 06:13:23)

tkt2020
Scratcher
2 posts

Scratch数学カフェ

累乗根(https://ja.wolframalpha.com/input?i2d=true&i=Surd%5By%2Cx%5D) のスクラッチでの計算方法がわかりません 助けてください。
(apple502jさんが出したものだと、(累乗)(3√2を2^1/3とする)何故か違う値になります。)
akinarin
Scratcher
500+ posts

Scratch数学カフェ

これでどうでしょうか
((((y)の[ln v]::operators)/(x))の[e^ v]::operators)

Last edited by akinarin (Jan. 15, 2023 04:52:33)

mattunn0329
Scratcher
4 posts

Scratch数学カフェ

3Dを作る上で必要な数学知識を教えてください。
oligami
Scratcher
100+ posts

Scratch数学カフェ

#904

mattunn0329 wrote:

3Dを作る上で必要な数学知識を教えてください。
scratchでですよね?
※三角関数は最低限絶対に入りますが、概念自体は簡単ですし、複雑なものを使うこともないでしょう
3Dのレベルによりますが、当たり判定を作ったりなどをするときは内積や外積などの行列計算が使えると楽です。法線は裏表判定などに使います。一応三次元上の直線を頑張って連立方程式すればだいたい何でもできるので(行列はあくまで抽象化※三次元の問題も二次元と同じように解けるようになるしなんなら文字の数はもっと減る だから)、頑張れば中学生でも作れます。ただ当たり判定のためにレポート用紙数枚分書きなぐったりします。行列だと半ページくらいで済みますし、抽象化されてて読みやすいです。
※三次元の直線は二次元の直線二つで表すことも可能なので、その方向で行くと中学生でもできます(y=ax+b, z=cx+d)
※scratchで3Dをやろうとするような人に1点は原点にしておくと楽なんて注意とかはいらないですよね
ただ、行列も結局は展開するとただの方程式になるので、調べて出てきた数式をそのまま使うのであれば特に数学知識はいらないと思います。

ついでにChatGPTに聞くと、

Scratchで3Dグラフィックスを作る際には以下の数学的知識が必要になるかもしれません:

1. 平面幾何学: 図形の形状や位置、大きさなどの基本的な概念
2. 座標系: 平面上の点を表現する方法
3. 回転: 3次元空間内でオブジェクトを回転させる方法
4. 投影: 3次元オブジェクトを2次元スクリーン上に投影する方法
5. 線形代数: 多次元ベクトルや行列などを扱う数学
これらの概念はScratchのAPIを使って実装することができますが、詳細な理解があるとより高度な3Dグラフィックスを作成することができるかもしれません。

となります。
KimiruHamiru
New Scratcher
500+ posts

Scratch数学カフェ

mattunn0329 wrote:

3Dを作る上で必要な数学知識を教えてください。
「数学知識」というくくりで適切な表現かあんまり自信がないのですが、ぜひとも
・数列(Scratchのリスト)
を追加したいですね。

リスト(数列)は「数字に通し番号を付けて扱うだけの話」と言ってもいいと思いますが、
「1頂点あたりx,y,zの座標値、数字3個ずつ」とか「三角形の3頂点を表す数字9つずつ」とか「Blenderで出力した500ポリゴンのモデルの…数字たくさん!」とか、
「4x4行列用の数字16個ずつ」とか「mvp行列計算の48 個ずつとか」
3Dでたくさんでてくる「たくさんの数字」や「数字をまとめて扱うコード」の読み書きが、楽になります。
扱いに慣れれば「数字が数万個あっても怖くなくなる」ので、割と重要、
扱いに慣れないと3Dはすごく大変で、他の部分でどうがんばっても、あっという間に道が途切れる、と思います。
KimiruHamiru
New Scratcher
500+ posts

Scratch数学カフェ

mattunn0329 wrote:

3Dを作る上で必要な数学知識を教えてください。
数学知識というくくりだと、三角関数とかの「関数ってそもそも何」というとこは、3Dを扱うにはかなり重要と思います。

3Dのプログラムでやる「計算」は、究極的には

移動元の「x座標,y座標,z座標」、を、使って、
移動先の「x座標,y座標,z座標」、を、計算する

みたいな関数表現が全てで、どうやってその形に当てはめるか、どうやって効率よく計算するかを考えてるだけ、とさえ思います。
mattunn0329
Scratcher
4 posts

Scratch数学カフェ

KimiruHamiru wrote:

mattunn0329 wrote:

3Dを作る上で必要な数学知識を教えてください。
数学知識というくくりだと、三角関数とかの「関数ってそもそも何」というとこは、3Dを扱うにはかなり重要と思います。

3Dのプログラムでやる「計算」は、究極的には

移動元の「x座標,y座標,z座標」、を、使って、
移動先の「x座標,y座標,z座標」、を、計算する

みたいな関数表現が全てで、どうやってその形に当てはめるか、どうやって効率よく計算するかを考えてるだけ、とさえ思います。

oligami wrote:

#904

mattunn0329 wrote:

3Dを作る上で必要な数学知識を教えてください。
scratchでですよね?
※三角関数は最低限絶対に入りますが、概念自体は簡単ですし、複雑なものを使うこともないでしょう
3Dのレベルによりますが、当たり判定を作ったりなどをするときは内積や外積などの行列計算が使えると楽です。法線は裏表判定などに使います。一応三次元上の直線を頑張って連立方程式すればだいたい何でもできるので(行列はあくまで抽象化※三次元の問題も二次元と同じように解けるようになるしなんなら文字の数はもっと減る だから)、頑張れば中学生でも作れます。ただ当たり判定のためにレポート用紙数枚分書きなぐったりします。行列だと半ページくらいで済みますし、抽象化されてて読みやすいです。
※三次元の直線は二次元の直線二つで表すことも可能なので、その方向で行くと中学生でもできます(y=ax+b, z=cx+d)
※scratchで3Dをやろうとするような人に1点は原点にしておくと楽なんて注意とかはいらないですよね
ただ、行列も結局は展開するとただの方程式になるので、調べて出てきた数式をそのまま使うのであれば特に数学知識はいらないと思います。

ついでにChatGPTに聞くと、

Scratchで3Dグラフィックスを作る際には以下の数学的知識が必要になるかもしれません:

1. 平面幾何学: 図形の形状や位置、大きさなどの基本的な概念
2. 座標系: 平面上の点を表現する方法
3. 回転: 3次元空間内でオブジェクトを回転させる方法
4. 投影: 3次元オブジェクトを2次元スクリーン上に投影する方法
5. 線形代数: 多次元ベクトルや行列などを扱う数学
これらの概念はScratchのAPIを使って実装することができますが、詳細な理解があるとより高度な3Dグラフィックスを作成することができるかもしれません。

となります。
ありがとうございます
KimiruHamiru
New Scratcher
500+ posts

Scratch数学カフェ

「数学知識」という言葉に引っ張られて
「数学教科書の章タイトル基準」、「フカン的な視点」の回答になって、
「むずかしすぎる」と思われたかも

と感じたので、

「3Dに必要な計算なんて、むずかしくない、むしろ拍子抜け」と感じそうな例を挙げときます。
https://scratch.mit.edu/projects/357863504/editor/
このプロジェクトは、座標計算部分はかなりガチ寄りな3D実装になってるはずです。
考え方は「動きはステージの平面上の動きとして計算する。最後にステージ丸ごと奥へ90度倒す(yとzを入れ替える)」です。
ankouakaisikairoka
Scratcher
100+ posts

Scratch数学カフェ

scratchの三角関数の精度が悪いので三角関数を三角関数や虚数を使わずに表す方法を教えて下さい。(逆三角関数はなぜか精度が高いので使っても良いです。)
Atridott
Scratcher
500+ posts

Scratch数学カフェ

削除 ⌫

Last edited by Atridott (Feb. 27, 2023 12:41:24)

Jinenjo_000
Scratcher
100+ posts

Scratch数学カフェ

>> #911
確認したところ、それはむしろ精度が下がります。(1桁程度) これは適当言いました
そもそもsinブロックを使った時点で、sinブロック以上の精度が得られることはないだろうと想像します。

Last edited by Jinenjo_000 (Feb. 27, 2023 12:39:26)

Jinenjo_000
Scratcher
100+ posts

Scratch数学カフェ

>> #910
テイラー展開が有効です。
プロジェクトはこちら、数学的な説明はこちらこちらが分かりやすいと思います。

16桁(m桁)の精度が欲しければ、大体 18~19 (n! の桁数 ≒ m となる n ) 次くらいまで求めれば十分でしょう。

(ちなみにもっとも簡単な方法は、三角関数表をリストに読み込んでしまうというものです。)

Last edited by Jinenjo_000 (Feb. 27, 2023 11:43:47)

sakura_neko
Scratcher
83 posts

Scratch数学カフェ

>>#910
sinブロックよりもxy座標の精度が高いことを利用した、こんな方法もありますよ。
Caffeine3860
Scratcher
69 posts

Scratch数学カフェ

こんにちは。今、このようなプロジェクトを作っています。

これは1(-80,-145)、2(0,-145)、3(80,-145)の3つの位置にパドルを動かすことができ、
そこにボール(左上から出てくる])が当てて右の方へボールをつなぐゲームですが、
ボールが出てくるとき、A,B,Cそれぞれのボールの落下速度(変数Random Yを減少させる値)、X、Yをどのような値に設定するか、
すみません。今見直したらボールは常に左上からでてきていました。
このとき、ボールの落下速度(変数Random Yを減少させる値)、X、Yをどのような値に設定するかにします。
②x-80の位置でパドルに当て、x0の位置でパドルに当てるとき、D,E,Fそれぞれのボールの落下速度(Random Yの減少させる値)、X、Yをどのような値に設定するか、
③D`,E`,F`は(同じスクリプトを組むとき)D,E,Fそれぞれのボールの値と同じに設定すると同じ動きをするか。
ということを教えてください。
補足:(2→3)最も高い位置まで行くときは2.5秒程度、中くらいでは2秒、低い位置では1.5秒ほどで当てるようにしたいです。

Last edited by Caffeine3860 (March 28, 2023 12:34:39)

Jinenjo_000
Scratcher
100+ posts

Scratch数学カフェ

まず、パドルのy座標を-150にすれば、C, B, Aまでの高さの比がちょうど 1:2:3 となり簡単です。
➀ 変数Random Y を減少させる値は、速度ではなく、重力加速度にあたると思います。これはすべて同じでないと物理的に不自然です。これを以下 g とします。
 Yは0でよいでしょう。このときXについて、ボールが高さ h から落下し、パドルで跳ね返り、再び同じ高さになるまでにかかる時間は √(8h/g) ∝ √h で与えられます。いま、C, B, A の高さは 1:2:3 なので、Xは 1: 1/√2 : 1/√3 となるようにすればよいです。

② 加速度は変化しません。Xはそのまま、Yを -Y とするのがもっとも簡単です。より自然な挙動(反発を繰り返すごとにボールの跳ね返る高さが低くなっていく)は、Y を -0.8~0.9Y 程度にすることで再現できます。

③ 同じです

補足について: そうなるようにRandom Y を減少させる値を調整してみてください。
 

Last edited by Jinenjo_000 (March 28, 2023 13:18:32)

taNup0n
Scratcher
500+ posts

Scratch数学カフェ

あの、、
IUT
やけんろんや、群論に詳しい人って、このコミュニティにどんくらいいいる?
(IUTについて聞こうと思って、聞く相手がいるかきになっただけです、ちなみに、群論も、圏論も本かいこんでウィキしただけの初心者です)
oligami
Scratcher
100+ posts

Scratch数学カフェ

#917

taNup0n wrote:

あの、、
IUT
や圏論や、群論に詳しい人って、このコミュニティにどんくらいいいる?
(IUTについて聞こうと思って、聞く相手がいるかきになっただけです、ちなみに、群論も、圏論も本かいこんでウィキしただけの初心者です)
宇宙際タイヒミュラー理論なんてちゃんと理解している人がこの世に何人いるか…
自分は体やら写像やら集合やら(これ群論では?)グラフ理論やらは理解しているけど、群論も圏論もやってない人間なので期待しないでください。
クォータニオンとかスプライン曲線とかならまだわかります。
akinarin
Scratcher
500+ posts

Scratch数学カフェ

僕はHaskell関連でモナドは勉強しましたが、圏論については良く解りませんでした。
(圏論の中ではモナドが未だ解りやすい?)

Haskellからモナドに行ったので、群とは何かとか圏とは何かは解るけれど
それを利用したものはプログラミングしか知りません。
(と言いつつもHaskellはあまり書けません)

先日、ガウス理論とは何かを調べてみたのですが、良く解りませんでした。

Last edited by akinarin (March 29, 2023 00:25:42)

taNup0n
Scratcher
500+ posts

Scratch数学カフェ

宇宙際タイヒミュラー理論なんてちゃんと理解している人がこの世に何人いるか…
自分は体やら写像やら集合やら(これ群論では?)グラフ理論やらは理解しているけど、群論も圏論もやってない人間なので期待しないでください。
クォータニオンとかスプライン曲線とかならまだわかります。
いや、厳密に理解しようというよりかは、IUTが、何を前提にして、何を結論づけてるのか、と言う点ガキになるという感じです。
自分で呼んで理解しようとは思いますが、用語とか、記号とかがまだあまり不慣れで、特に、数学概念の「イメージ」(有限体の「イメージ」は、余りに着目する四則算みたいな)を理解したいと思ってます。

Powered by DjangoBB