見出し画像

【Godot初心者必見】GDScript 数学まとめ(4.x)

探しても日本語の情報がなかったためまとめました。

四則演算他

よく見るやつでいけます。。

# 足し算(a + b)
var wa = a + b

# 引き算(a - b)
var sa = a - b

# 掛け算(a x b)
var seki = a * b

# 割り算(a ÷ b)
var syo = a / b

余り

プログラミング未経験の方はあまり知らないと思います(悪寒)。あまりを求めるには%を使います。これを使って小学三年生ごろの時にやったあれもできます。

# a / bのあまり
var amari = a % b

# a / b(整数だけ)
var a_waru_b = ( a - a % b ) / b
# 小学三年生ごろのあれ
print("a ÷ b は" + str(a_waru_b) + "あまり" + str(amari) + "です。")

累乗、平方根

累乗は^です。関数もあります。

# aのb乗
var ruijo = a ^ b

# 関数バージョン
var ruijo_func = pow(a, b)

平方根はsqrt()です。

# aの平方根
var heyhowcon = sqrt(a)

計算順序

基本的には

  1. 累乗

  2. 掛け算割り算

  3. 足し算引き算

の順です。不安な方は括弧でくくると指定した通りに動きます。私はだいたい括弧でくくってる…

数学関数

絶対値

abs()です。

# aの絶対値
var zettaichi = abs(a)

符号

sign()です。

# aの符号
var fugo = sign(a)
# a > 0のとき1
# a < 0のとき-1
# a = 0のとき0

小数の丸め

小数を一番近い整数にします。round()です。要するに小数第一位を四捨五入します。

# aを整数に
var seisu_a = round(a)

整数の四捨五入と小数第一位以外の四捨五入

整数部分の四捨五入、小数第一位以外の四捨五入は工夫する必要があります。
1の位からa桁目でbを四捨五入する関数を用意して、

# 1の位からa桁目でbを四捨五入する関数
func round_adv(a, b):
    var kekka = round( b / ( 10 ^ a ) ) * ( 10 ^ a )
    return kekka

もしnumを小数第2位で四捨五入したければ、

# もしnumを小数第2位で四捨五入したければ、
round_adv(-1, num)

とします。第一引数は-2ではない点に注意です。小数第一位なら0を第一引数に指定します。

小数第一位の切り捨て、上げ

切り捨てはfloor()、切り上げはceil()です。整数、小数第一位以下の切り捨て上げも四捨五入と同じように実装できます。関数の中のroundをfloor, ceilに変えるだけです。なんでこういうのビルドインで提供しないのかな。

# aを小数第一位切り捨て
var kirisute = floor(a)

# aを小数第一位切り上げ
var kiriage = ceil(a)

乱数

randi()とrandf()があります。iの方がintの乱数、fがfloatの乱数です。両方とも正の値を返します。負の値がほしかったり、範囲を制限するには工夫が必要です。

randi()は0以上のint型のランダムな値を返します。
randf()は0-1の間のfloat型のランダムな値を返します。

# intの乱数
var ransu_int = randi()

# floatの乱数
var ransu_flt = randf()

工夫: 0~10が欲しい場合

var zero_to_ten_rdm = randi() % 11

randi() % 10ではないので注意。

工夫2: -5~5が欲しい場合
5を引くだけです。簡単。

var mfive_to_five_rdm = ( randi() % 11 ) - 5

10~20が欲しい場合はわかりますね?10を足すだけです。簡単。

三角関数

sin, cos, tan

sin(), cos(), tan()です。関数にはラジアン角を渡す必要があります。下の度数toラジアン、ラジアンto度数の関数と組み合わせて使うとよいです。

# sina, cosa, tana
var sin_a = sin(a)
var cos_a = cos(a)
var tan_a = tan(a)

度数toラジアン、ラジアンto度数

  • 4.x以前

deg2rad(), rad2deg()です。

# a度をラジアンに
var rad_a = deg2rad(a)

# ラジアン角bを度数に
var deg_a = rad2deg(b)
  • 4.x

deg_to_rad(), rad_to_deg()です。

# a度をラジアンに
var rad_a = deg_to_rad(a)

# ラジアン角bを度数に
var deg_a = rad_to_deg(b)

4.xからは以前のto2と表記するのはやめたっぽいです。ほかも_to_表記になってるはずです。調べた方教えてください。

逆三角関数

逆三角関数もあるみたいです。asin, acos, atan。使いみちは知りません。後で追記します。

終わりに

ここまで読んでくれてありがとうございます。以上有名どころを紹介しました。抜け、誤りなどがあったら報告お願いします。

Godotに関する質問も気軽にコメントでしてください!この記事の内容に関係なくてもOKです!できる限り回答させていただきます!

この記事が気に入ったらサポートをしてみませんか?