Discuss Scratch

nozotti0909
Scratcher
33 posts

Scratch数学カフェ

a^bがあるとき
累乗を求める方法って
10^(log(a)bと繰り返し二乗法以外で計算する方法はありますか、
hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

e^(ln(a)b)ってほぼ同じだけどだめかな
kemo33oolong-2025x5G
Scratcher
41 posts

Scratch数学カフェ

予定としてゲームを作る者です。攻撃でビームランチャーのような一直線に放つ攻撃で、射角を算出するプログラムを作りたいです。弧度法と度数法両対応にしたいです。地面からマウスカーソルで撃ちたい向きまでの角度を算出して、表示するものです。イメージとしては▄︻┻┳═一∠ )x°のような感じです。教えてください(補足)地面に水平な角度を0、右斜め上60°なら60を返す。射角決定までキャラクターがいる地面の境界とマウスの点が作る角が表示される

Last edited by kemo33oolong-2025x5G (July 4, 2026 01:39:17)

okome-oisii
Scratcher
1 post

Scratch数学カフェ

#1154
っていうことはsinとか使わずにでも一応プログラミングはできるって話で合っていますか?
KimiruHamiru
New Scratcher
500+ posts

Scratch数学カフェ

okome-oisii wrote:

#1154
っていうことはsinとか使わずにでも一応プログラミングはできるって話で合っていますか?
「合っています」

というのが短い答えなのですが、

Scratchの「~に向ける」のような「動き」ブロックも
中身は「JavaScriptのMath.sin()とかの機能を使って書かれている」

と思われる
(たぶんこのへん: https://github.com/scratchfoundation/scratch-vm/blob/develop/src/blocks/scratch3_motion.js )
ので、

「sin」とか使わなくても何でもプログラミングできる(これだと数学の話かもしれない)

と言うよりは

(( )の[sin v]::operators)
とかの、

「sinとかのブロック」を使わなくても何でもプログラミングできる(これはScratchに限定した話に違いない)

と言う方が誤解がない気はします。

「数学のsin()自体を、数学の別の何か、特に+-×÷のような四則演算だけで代替する」という方法があるかどうかは、私はわかりません。
inoking
Scratcher
1000+ posts

Scratch数学カフェ

KimiruHamiru wrote:

「数学のsin()自体を、数学の別の何か、特に+-×÷のような四則演算だけで代替する」という方法があるかどうかは、私はわかりません。
近似する方法がいくつも知られています。
Scratch 内でも実現されています。
「近似」での検索結果
hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

kemo33oolong-2025x5G wrote:

予定としてゲームを作る者です。攻撃でビームランチャーのような一直線に放つ攻撃で、射角を算出するプログラムを作りたいです。弧度法と度数法両対応にしたいです。地面からマウスカーソルで撃ちたい向きまでの角度を算出して、表示するものです。イメージとしては▄︻┻┳═一∠ )x°のような感じです。教えてください(補足)地面に水平な角度を0、右斜め上60°なら60を返す。射角決定までキャラクターがいる地面の境界とマウスの点が作る角が表示される
えーと、atanを使うのはどうですか?
atanは角度を求めるやつで、atan(y/x)を当てはめるとそこの座標までの角度が出ます。
([atan v] of ((ToX) / (ToY))::operators)
だと0,0からの距離が出ます!
もし自分自身のXYからの距離を求めたいならToX,ToYからX座標、Y座標を引くといいはずです!
(注意点)
たまに正常に動かないこともあるので、if分岐を使って正常に動かない角度を補うのがいいと思います!
kemo33oolong-2025x5G
Scratcher
41 posts

Scratch数学カフェ

#1169ありがとうございます。事前に調べてもスクラッチで再現できそうなものが出てこなかったのでありがとうございます。(三角関数を習っていない人)tanとかatan2なる物がありますが、atan2とは何ですか?またスクラッチ上でatan2を再現はできるのですか?
zepto_0321
Scratcher
1 post

Scratch数学カフェ

kemo33oolong-2025x5G wrote:

#1169ありがとうございます。事前に調べてもスクラッチで再現できそうなものが出てこなかったのでありがとうございます。(三角関数を習っていない人)tanとかatan2なる物がありますが、atan2とは何ですか?またスクラッチ上でatan2を再現はできるのですか?

atan の返り値の定義域は-90° <= atan x <=90°で、
atan2 の返り値の定義域は -180°<= atan2 x <= 180°です。

射角を出すならatan2(y,x)のほうが使い勝手が良いです。
入力のx,y座標からどの象限に座標があるかで場合分けし、角度を補正するとatanだけでatan2を再現できます。
U-Yl2
Scratcher
11 posts

Scratch数学カフェ

削除

Last edited by U-Yl2 (July 4, 2026 09:16:24)

No1_in_the_world
New Scratcher
2 posts

Scratch数学カフェ

inoking
Scratcher
1000+ posts

Scratch数学カフェ

No1_in_the_world wrote:

https://scratch.mit.edu/projects/1351235121
教えてください
「ハート関数」についてでしょうか。

こちらから引用します。

inoking wrote:

ネットにいくらでも情報は出ています。
ここで誰かが解説するよりも
はるかに分かりやすく丁寧な解説がいくつも見つかるでしょう。
inoking
Scratcher
1000+ posts

Scratch数学カフェ

zepto_0321 wrote:

kemo33oolong-2025x5G wrote:

#1169ありがとうございます。事前に調べてもスクラッチで再現できそうなものが出てこなかったのでありがとうございます。(三角関数を習っていない人)tanとかatan2なる物がありますが、atan2とは何ですか?またスクラッチ上でatan2を再現はできるのですか?

atan の返り値の定義域は-90° <= atan x <=90°で、
atan2 の返り値の定義域は -180°<= atan2 x <= 180°です。

射角を出すならatan2(y,x)のほうが使い勝手が良いです。
入力のx,y座標からどの象限に座標があるかで場合分けし、角度を補正するとatanだけでatan2を再現できます。
「定義域」ではありません。定義域は入力です。
出力なので「値域」です。
hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

zepto_0321 wrote:

kemo33oolong-2025x5G wrote:

#1169ありがとうございます。事前に調べてもスクラッチで再現できそうなものが出てこなかったのでありがとうございます。(三角関数を習っていない人)tanとかatan2なる物がありますが、atan2とは何ですか?またスクラッチ上でatan2を再現はできるのですか?

atan の返り値の定義域は-90° <= atan x <=90°で、
atan2 の返り値の定義域は -180°<= atan2 x <= 180°です。

射角を出すならatan2(y,x)のほうが使い勝手が良いです。
入力のx,y座標からどの象限に座標があるかで場合分けし、角度を補正するとatanだけでatan2を再現できます。
atan2ってあるんですね、atanから求めることとかできるんですか?できればScratchblocksで教えていただけると嬉しいです

Last edited by hgpihe3746 (July 4, 2026 11:11:48)

inoking
Scratcher
1000+ posts

Scratch数学カフェ

hgpihe3746 wrote:

atan2ってあるんですね、atanから求めることとかできるんですか?できればScratchblocksで教えていただけると嬉しいです
すでに書かれています ↓

zepto_0321 wrote:

入力のx,y座標からどの象限に座標があるかで場合分けし、角度を補正するとatanだけでatan2を再現できます。

こちらにも書かれていることですが
「まずは自分で調べたり考えたりしましょう。」
「atan2」での検索結果 でもいくつもヒットします。
hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

#1177 ありがとうございます!

Last edited by hgpihe3746 (July 5, 2026 00:14:03)

hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

自分としての疑問なのですが、scratchのsin関数を使用してasin関数は作れますか?再現できるのかどうなのか気になるのでできればコメントお願いします
newmomizi_txt
Scratcher
1000+ posts

Scratch数学カフェ

#1179
「y = sin(x) となるような x (-90° <= x <= 90°) を求める問題」といえますから、可能です。
もっとも簡単なのは、この範囲でsinが単調増加することを利用して、二分探索する方法だと思います。

たとえば、y = 0.866 のケースを考えてみると、

sin(0°) < y < sin(90°)
sin(45°) < y < sin(90°)
sin(45°) < y < sin(67.5°)
sin(56.25°) < y < sin(67.5°)

と、「現状判明しているxの範囲の中間値」との比較を繰り返すことで、だんだんと範囲を絞っていくことができますね。

これを8回繰り返せば、解の範囲は 180/256 ≒ 0.703° 単位で求まります。

Last edited by newmomizi_txt (July 6, 2026 02:09:31)

hgpihe3746
Scratcher
11 posts

Scratch数学カフェ

#1180 2分探索ですか。できれば近似値ではない方でお願いします
inoking
Scratcher
1000+ posts

Scratch数学カフェ

hgpihe3746 wrote:

#1180 2分探索ですか。できれば近似値ではない方でお願いします
まず、数学的にできません。

そもそも浮動小数点という時点で近似値です。

また、2分探索による試行も立派な「数値解」です。
その精度も #1180 では示されています。

思いつきで質問するのではなく
何をやりたいのか、何が課題なのか
自分の中で整理してから一般的なことを調べたうえ
必要なことをフォーラムで質問するようお願いします。

Powered by DjangoBB