Kuina-chan

くいなちゃん2018年12月11日


プログラミング言語Kuin」の言語仕様101、「kuinライブラリ」「libライブラリ」についてです。

1kuin、libライブラリ

Kuinに標準的に用意されているライブラリのうち、基本機能を提供するライブラリ「kuin.kn」と汎用機能を提供するライブラリ「lib.kn」を解説します。
またこれらのライブラリでは、角度を扱う場合の単位はすべてラジアンです。
名前 説明
kuin@Class すべてのクラスが継承するルートクラス
kuin@Class.cmp インスタンスの大小関係を返すメソッド
kuin@Class.ctor インスタンス生成時に呼ばれるメソッド
kuin@Class.toStr 文字列化した値を返すメソッド
lib@BmSearch 高速文字列検索クラス
lib@BmSearch.find 高速文字列検索を行うメソッド
lib@Bool bool型をラップしたクラス
lib@Bool.value bool型の値を保持するプロパティ
lib@Char char型をラップしたクラス
lib@Char.value char型の値を保持するプロパティ
lib@Float float型をラップしたクラス
lib@Float.value float型の値を保持するプロパティ
lib@Int int型をラップしたクラス
lib@Int.value int型の値を保持するプロパティ
lib@Rnd 乱数
lib@Rnd.rnd intの乱数を取得するメソッド
lib@Rnd.rndBit64 bit64の乱数を取得するメソッド
lib@Rnd.rndFloat 小数の乱数を取得するメソッド
lib@Str []char型をラップしたクラス
lib@Str.value []char型の値を保持するプロパティ
lib@acos 逆余弦関数
lib@acosh 逆双曲線余弦関数
lib@asin 逆正弦関数
lib@asinh 逆双曲線正弦関数
lib@atan 逆正接関数
lib@atanh 逆双曲線正接関数
lib@ceil 天井関数
lib@cerp 3次関数補間をする関数
lib@chase 座標を目的地に向かって追跡させる関数
lib@cmdLine コマンドライン引数を取得する関数
lib@cmp 文字列を辞書順で比較する関数
lib@cmpEx 文字列を辞書順で高機能比較する関数
lib@cos 余弦関数
lib@cosh 双曲線余弦関数
lib@countUp 1ずつ増やした整数の配列を作成する関数
lib@dateToInt 日付をUNIX時間に変換する関数
lib@decrypt データを復号する関数
lib@dist 平面上の2点間の距離を求める関数
lib@e ネイピア数の定数
lib@encrypt データを暗号化する関数
lib@exitCode 終了コードを設定する関数
lib@exp 指数関数
lib@floor 床関数
lib@hash データをハッシュ化する関数
lib@hermite 3次エルミート補間をする関数
lib@intMax intの最大値の定数
lib@intMin intの最小値の定数
lib@intToDate UNIX時間を日付に変換する関数
lib@intToLocalDate UNIX時間をローカルな日付に変換する関数
lib@invRot 座標から回転角度を求める関数
lib@lerp 線形補間をする関数
lib@levenshtein 2つの文字列の類似度を取得する関数
lib@ln 自然対数の関数
lib@localDateToInt ローカルな日付をUNIX時間に変換する関数
lib@log 対数関数
lib@makeBmSearch 高速文字列検索クラスのインスタンスを生成する関数
lib@makeRnd 乱数クラスのインスタンスを生成する関数
lib@max intの大きいほうの値を返す関数
lib@maxFloat floatの大きいほうの値を返す関数
lib@min intの小さいほうの値を返す関数
lib@minFloat floatの小さいほうの値を返す関数
lib@now 現在の時刻(UNIX時間)を取得する関数
lib@pi 円周率の定数
lib@qerp 2次関数補間をする関数
lib@rnd intの乱数を取得する関数
lib@rndBit64 bit64の乱数を取得する関数
lib@rndFloat 小数の乱数を取得する関数
lib@rndUuid UUIDバージョン4を生成する関数
lib@rot 回転した座標を求める関数
lib@round 指定した桁を四捨五入する関数
lib@same floatの計算誤差を考慮して比較する関数
lib@sin 正弦関数
lib@sinh 双曲線正弦関数
lib@sleep 一定時間処理を停止させる関数
lib@sqrt 平方根
lib@sysTime システム時刻を取得する関数
lib@tan 正接関数
lib@tanh 双曲線正接関数
lib@toDegree ラジアンを度に変換する関数
lib@toRad 度をラジアンに変換する関数

2kuin@Class

「kuin@Class」は、すべてのクラスが継承するルートクラスです。
Kuinでのクラスの扱い方は、クラスを参照してください。

2.1kuin@Class.cmp



「kuin@Class.cmp」は、インスタンスの大小関係を返すメソッドです。

func cmp(t: kuin@Class): int

t 比較対象のインスタンス
戻り値 自身とtを比較して、自身のほうが大きければ1、小さければ-1、等しければ0
このメソッドをオーバーライドすると、「<=」演算子やswitchブロックなどでの比較が可能になります。
オーバーライドしていないクラスを比較すると、E9170004例外が発生します。

2.2kuin@Class.ctor



「kuin@Class.ctor」は、インスタンス生成時に呼ばれるメソッドです。

func ctor()

このメソッドをオーバーライドすると、インスタンス生成時に任意の処理を行うことができます。

2.3kuin@Class.toStr



「kuin@Class.toStr」は、文字列化した値を返すメソッドです。

func toStr(): []char

戻り値 文字列化した値
このメソッドをオーバーライドすると、「"\{...}"」で文字列化したときの値が設定できます。
オーバーライドしていないクラスを文字列化すると、空文字列が返ります。

3lib@BmSearch

「lib@BmSearch」は、高速文字列検索クラスです。

3.1lib@BmSearch.find



「lib@BmSearch.find」は、高速文字列検索を行うメソッドです。

func find(text: []char, start: int): int

text 検索される文字列
start 検索を開始する位置。 すべて検索する場合は-1を指定
戻り値 最初に見つかった位置。 1つも見つからなかった場合は「-1」
「text」から、lib@makeBmSearch関数に渡した「pattern」の文字列を検索します。
「start」が-1でも配列の範囲内でもないとき、この関数は-1を返します。

4lib@Bool

「lib@Bool」は、bool型をラップしたクラスです。
kuin@Classを受け取る引数にbool型の値を渡したい場合に使います。

4.1lib@Bool.value



「lib@Bool.value」は、bool型の値を保持するプロパティです。

5lib@Char

「lib@Char」は、char型をラップしたクラスです。
kuin@Classを受け取る引数にchar型の値を渡したい場合に使います。

5.1lib@Char.value



「lib@Char.value」は、char型の値を保持するプロパティです。

6lib@Float

「lib@Float」は、float型をラップしたクラスです。
kuin@Classを受け取る引数にfloat型の値を渡したい場合に使います。

6.1lib@Float.value



「lib@Float.value」は、float型の値を保持するプロパティです。

7lib@Int

「lib@Int」は、int型をラップしたクラスです。
kuin@Classを受け取る引数にint型の値を渡したい場合に使います。

7.1lib@Int.value



「lib@Int.value」は、int型の値を保持するプロパティです。

8lib@Rnd

「lib@Rnd」は、乱数です。

8.1lib@Rnd.rnd



「lib@Rnd.rnd」は、intの乱数を取得するメソッドです。

func rnd(min: int, max: int): int

min 取得する乱数の下限
max 取得する乱数の上限
戻り値 min以上max以下の整数の乱数
maxとminの差がlib@intMaxを超えてはなりません。
表8-1: lib@Rnd.rndの例外
発生条件 ビルド 例外コード
(16進数)
「min」が「max」より大きい dbgのみ E9170006
「max」と「min」の差がlib@intMaxを超える dbgのみ E9170006

8.2lib@Rnd.rndBit64



「lib@Rnd.rndBit64」は、bit64の乱数を取得するメソッドです。

func rndBit64(): bit64

戻り値 16進数で0以上FFFFFFFFFFFFFFFF以下の乱数

8.3lib@Rnd.rndFloat



「lib@Rnd.rndFloat」は、小数の乱数を取得するメソッドです。

func rndFloat(min: float, max: float): float

min 取得する乱数の下限
max 取得する乱数の上限。 ただしこの値未満の値が返る
戻り値 min以上max未満の小数の乱数
表8-2: lib@Rnd.rndFloatの例外
発生条件 ビルド 例外コード
(16進数)
「min」が「max」以上である dbgのみ E9170006

9lib@Str

「lib@Str」は、[]char型をラップしたクラスです。
kuin@Classを受け取る引数に[]char型の値を渡したい場合に使います。

9.1lib@Str.value



「lib@Str.value」は、[]char型の値を保持するプロパティです。

10lib@acos

「lib@acos」は、逆余弦関数です。

func acos(x: float): float

x 任意の値
戻り値 」の値

11lib@acosh

「lib@acosh」は、逆双曲線余弦関数です。

func acosh(x: float): float

x 任意の値
戻り値 」の値

12lib@asin

「lib@asin」は、逆正弦関数です。

func asin(x: float): float

x 任意の値
戻り値 」の値

13lib@asinh

「lib@asinh」は、逆双曲線正弦関数です。

func asinh(x: float): float

x 任意の値
戻り値 」の値

14lib@atan

「lib@atan」は、逆正接関数です。

func atan(x: float): float

x 任意の値
戻り値 」の値

15lib@atanh

「lib@atanh」は、逆双曲線正接関数です。

func atanh(x: float): float

x 任意の値
戻り値 」の値

16lib@ceil

「lib@ceil」は、天井関数です。

func ceil(x: float): float

x 任意の値
戻り値 x以上の最小の整数
天井関数とは小数xに対し、x以上の最小の整数を求める関数です。
小数点以下を正の方向に切り上げる関数ともいえます。

17lib@cerp

「lib@cerp」は、3次関数補間をする関数です。

func cerp(first: float, last: float, rate: float): float

first 始点
last 終点
rate 始点を0、終点を1としたときの0以上1以下の位置。 0より小さい場合は0にされ、1より大きい場合は1にされる
戻り値 始点と終点を3次関数補間した値
3次関数補間は、停止状態からだんだん加速したのち、だんだん減速して停止するような曲線を描きます。
「cerp」は「Cubic intERPolation」の略です。

18lib@chase

「lib@chase」は、座標を目的地に向かって追跡させる関数です。

func chase(x: &float, target: float, vel: float): bool

x 座標
target 目的地の座標
vel 速度
戻り値 目的地に到達したらtrue、していなければfalse
  • xよりもtargetのほうが大きければ、xに「vel」が加算される。
  • xよりもtargetのほうが小さければ、xに「-vel」が加算される。
  • 加算してxがtargetを追い越したときには、xにはtargetが代入される。
  • 以上の処理を終え、xがtargetと等しかった場合、戻り値としてtrueが返る。
図18-1: lib@chaseの仕様

19lib@cmdLine

「lib@cmdLine」は、コマンドライン引数を取得する関数です。

func cmdLine(): [][]char

戻り値 スペース区切りで配列に分割されたコマンドライン引数

20lib@cmp

「lib@cmp」は、文字列を辞書順で比較する関数です。

func cmp(s1: []char, s2: []char): int

s1 比較する文字列1
s2 比較する文字列2
戻り値 s1がs2よりも辞書順で大きければ1、小さければ-1、等しければ0
文字列の大小は「<」などの比較演算子でも比較可能ですが、文字列の比較にはやや処理時間がかかるため、一度比較した後で結果を再利用したい場合にcmp関数が便利です。
「s1」「s2」はnull以外の値でなければなりません。

21lib@cmpEx

「lib@cmpEx」は、文字列を辞書順で高機能比較する関数です。

func cmpEx(s1: []char, s2: []char, len: int, ignoreCase: bool): int

s1 比較する文字列1
s2 比較する文字列2
len 比較する文字数
ignoreCase 大文字と小文字を無視するならtrue、区別するならfalse
戻り値 s1がs2よりも辞書順で大きければ1、小さければ-1、等しければ0
例えば「lib@cmpEx("abc", "ABD", 2, true)」は、大文字と小文字を無視して2文字を比較して一致しているため、0を返します。
「s1」「s2」はnull以外の値でなければなりません。

22lib@cos

「lib@cos」は、余弦関数です。

func cos(x: float): float

x 任意の値
戻り値 」の値

23lib@cosh

「lib@cosh」は、双曲線余弦関数です。

func cosh(x: float): float

x 任意の値
戻り値 」の値

24lib@countUp

「lib@countUp」は、1ずつ増やした整数の配列を作成する関数です。

func countUp(min: int, max: int): []int

min 開始値
max 終了値
lib@countUp(5,8)」を呼び出すと、「[5,6,7,8]」が返ります。

25lib@dateToInt

「lib@dateToInt」は、日付をUNIX時間に変換する関数です。

func dateToInt(year: int, month: int, day: int, hour: int, minute: int, second: int): int

year 年(西暦4桁、1970以上3000以下)
month 月(1以上12以下)
day 日(1以上31以下)
hour 時(0以上23以下)
minute 分(0以上59以下)
second 秒(0以上59以下)
戻り値 UNIX時間
表25-1: lib@dateToIntの例外
発生条件 ビルド 例外コード
(16進数)
日付の値が有効範囲外 dbgのみ E9170006

26lib@decrypt

「lib@decrypt」は、データを復号する関数です。

func decrypt(data: []bit8, key: []bit8): []bit8

data 暗号化されたデータ
key 暗号化時に使用した32byte(配列の要素数が32)の暗号鍵
戻り値 復号されたデータ

27lib@dist

「lib@dist」は、平面上の2点間の距離を求める関数です。

func dist(x: float, y: float, centerX: float, centerY: float): float

x 座標X
y 座標Y
centerX 中心座標X
centerY 中心座標Y
戻り値 距離
中心座標から指定した座標までの距離が返ります。

28lib@e

「lib@e」は、ネイピア数の定数です。

const e: float :: 2.71828182845904523536

自然対数の底(ネイピア数)を、float型で表せる最高精度で定義したものです。

29lib@encrypt

「lib@encrypt」は、データを暗号化する関数です。

func encrypt(data: []bit8, key: []bit8): []bit8

data 暗号化するデータ
key 32byte(配列の要素数が32)の暗号鍵
戻り値 暗号化されたデータ
  • 極めて安全性が高いとされるAES-256アルゴリズムを用いている。
  • keyの値は自由だが、復号する際に同じkeyを使わなければ復号できない。
  • データの要素数が16の倍数になっていない場合は、16の倍数になるまでデータ末端に「0」のデータが自動的に追加される。
図29-1: lib@encryptの仕様

30lib@exitCode

「lib@exitCode」は、終了コードを設定する関数です。

func exitCode(code: int)

code 終了コード。 16進数で0以上FFFFFFFF以下の値でなければならない。
プログラムが別のプログラムから呼び出されて起動している際に、呼び出し元のプログラムにエラーが起こった旨などを通知する終了コードをこの関数で設定できます。
この関数で設定せずにプログラムを終了した場合、終了コードは「0」になります。
表30-1: lib@exitCodeの例外
発生条件 ビルド 例外コード
(16進数)
「code」が16進数で0以上FFFFFFFF以下の範囲外 dbgのみ E9170006

31lib@exp

「lib@exp」は、指数関数です。

func exp(x: float): float

x 任意の値
戻り値 」の値

32lib@floor

「lib@floor」は、床関数です。

func floor(x: float): float

x 任意の値
戻り値 x以下の最大の整数
床関数とは小数xに対し、x以下の最大の整数を求める関数です
小数点以下を負の方向に切り捨てる関数ともいえます。

33lib@hash

「lib@hash」は、データをハッシュ化する関数です。

func hash(data: []bit8): []bit8

data ハッシュ化するデータ
戻り値 32byte(配列の要素数が32)のハッシュ値
  • 暗号学的な性質を持つSHA-256アルゴリズムを用いているため、ハッシュ値から元データを作成することは事実上不可能とされる。
図33-1: lib@hashの仕様

34lib@hermite

「lib@hermite」は、3次エルミート補間をする関数です。

func hermite(pos: []float, rate: float): float

pos 点の配列
rate posの最初の要素を0とし、以後要素に沿って1、2、…、としたときの、0以上要素数未満の位置。 0より小さい場合は0にされ、「要素数-1」を超えた場合には「要素数-1」にされる
戻り値 posの各点を通る、なめらかな曲線上の値
3次エルミート補間は、指定した各点を通るなめらかな曲線を描きます。

35lib@intMax

「lib@intMax」は、intの最大値の定数です。

const intMax: int :: 9223372036854775807

int型で表せる値の最大値です。

36lib@intMin

「lib@intMin」は、intの最小値の定数です。

const intMin: int :: -9223372036854775807 - 1

int型で表せる値の最小値です。

37lib@intToDate

「lib@intToDate」は、UNIX時間を日付に変換する関数です。

func intToDate(time: int, year: &int, month: &int, day: &int, hour: &int, minute: &int, second: &int): int

time 変換するUNIX時間
year 年(西暦4桁)の格納先
month 月(1以上12以下)の格納先
day 日(1以上31以下)の格納先
hour 時(0以上23以下)の格納先
minute 分(0以上59以下)の格納先
second 秒(0以上59以下)の格納先
戻り値 曜日(0=日、1=月、…、6=土)

38lib@intToLocalDate

「lib@intToLocalDate」は、UNIX時間をローカルな日付に変換する関数です。

func intToLocalDate(time: int, year: &int, month: &int, day: &int, hour: &int, minute: &int, second: &int): int

time 変換するUNIX時間
year 年(西暦4桁)の格納先
month 月(1以上12以下)の格納先
day 日(1以上31以下)の格納先
hour 時(0以上23以下)の格納先
minute 分(0以上59以下)の格納先
second 秒(0以上59以下)の格納先
戻り値 曜日(0=日、1=月、…、6=土)
実行環境ごとに設定されたタイムゾーンのローカルな日付に変換します。

39lib@invRot

「lib@invRot」は、座標から回転角度を求める関数です。

func invRot(x: float, y: float, centerX: float, centerY: float): float

x 座標X
y 座標Y
centerX 中心座標X
centerY 中心座標Y
戻り値 角度(0以上未満)
中心から見たときの座標が存在する角度を取得します。

40lib@lerp

「lib@lerp」は、線形補間をする関数です。

func lerp(first: float, last: float, rate: float): float

first 始点
last 終点
rate 始点を0、終点を1としたときの0以上1以下の位置。 0より小さい場合は0にされ、1より大きい場合は1にされる。
戻り値 始点と終点を線形補間した値
線形補間は、2点間を等速直線運動するような線分を描きます。
「lerp」は「Linear intERPolation」の略です。

41lib@levenshtein

「lib@levenshtein」は、2つの文字列の類似度を取得する関数です。

func levenshtein(s1: []char, s2: []char): int

s1 文字列1
s2 文字列2
戻り値 s1とs2の類似度(レーベンシュタイン距離)
「レーベンシュタイン距離」とは、文字列に「挿入」「削除」「置換」を最低何回行うともう一方の文字列に変換できるかを表す値で、小さいほど2つの文字列は類似しています。
lib@levenshtein("abc", "abd")は「1」が返り、lib@levenshtein("program", "problem")は「3」が返ります。

42lib@ln

「lib@ln」は、自然対数の関数です。

func ln(x: float): float

x 任意の値
戻り値 」の値

43lib@localDateToInt

「lib@localDateToInt」は、ローカルな日付をUNIX時間に変換する関数です。

func localDateToInt(year: int, month: int, day: int, hour: int, minute: int, second: int): int

year 年(西暦4桁、1970以上3000以下)
month 月(1以上12以下)
day 日(1以上31以下)
hour 時(0以上23以下)
minute 分(0以上59以下)
second 秒(0以上59以下)
戻り値 UNIX時間
実行環境ごとに設定されたタイムゾーンのローカルな日付を変換します。
表43-1: lib@localDateToIntの例外
発生条件 ビルド 例外コード
(16進数)
日付の値が有効範囲外 dbgのみ E9170006

44lib@log

「lib@log」は、対数関数です。

func log(base: float, x: float): float

base 対数の底
x 任意の値
戻り値 」の値

45lib@makeBmSearch

「lib@makeBmSearch」は、高速文字列検索クラスのインスタンスを生成する関数です。

func makeBmSearch(pattern: []char): lib@BmSearch

pattern 検索する文字列
戻り値 高速文字列検索クラスのインスタンス
高速文字列検索クラスは、検索対象の文字列が長かったり、複数の文字列から同じ文字列を何度も検索する場合に高速です。 短い文字列に対して少ない回数検索するときは、組み込みメソッドの「[]char.findStr」を使うほうが高速です。
  • 検索にはボイヤー・ムーア文字列検索アルゴリズムを用いている。
図45-1: lib@makeBmSearchの仕様

46lib@makeRnd

「lib@makeRnd」は、乱数クラスのインスタンスを生成する関数です。

func makeRnd(seed: int): lib@Rnd

seed 乱数シード。 -1を指定すると、ミリ秒単位の時刻を用いて自動設定される
戻り値 乱数クラスのインスタンス
乱数シードに-1以外の値を指定すると、乱数クラスのインスタンスを生成するたびに同じ乱数が再現します。
  • 擬似乱数生成にはメルセンヌツイスタ(SFMT)を用いており、周期の高品質な擬似乱数が高速で生成される。
図46-1: lib@makeRndの仕様

47lib@max

「lib@max」は、intの大きいほうの値を返す関数です。

func max(n1: int, n2: int): int

n1 値1
n2 値2
戻り値 大きいほうの値

48lib@maxFloat

「lib@maxFloat」は、floatの大きいほうの値を返す関数です。

func maxFloat(n1: float, n2: float): float

n1 値1
n2 値2
戻り値 大きいほうの値

49lib@min

「lib@min」は、intの小さいほうの値を返す関数です。

func min(n1: int, n2: int): int

n1 値1
n2 値2
戻り値 小さいほうの値

50lib@minFloat

「lib@minFloat」は、floatの小さいほうの値を返す関数です。

func minFloat(n1: float, n2: float): float

n1 値1
n2 値2
戻り値 小さいほうの値

51lib@now

「lib@now」は、現在の時刻(UNIX時間)を取得する関数です。

func now(): int

戻り値 UNIX時間
1970年1月1日0時0分0秒から現在までの経過時間を秒で表す「UNIX時間」を返します。
この「UNIX時間」は、コンピュータで日時を表すときによく用いられる形式です。 「lib@intToDate」関数と組み合わせることで、現在時刻を「年・月・日・時・分・秒」に分けて取得できます。

52lib@pi

「lib@pi」は、円周率の定数です。

const pi: float :: 3.14159265358979323846

円周率を、float型で表せる最高精度で定義したものです。

53lib@qerp

「lib@qerp」は、2次関数補間をする関数です。

func qerp(first: float, last: float, easeIn: bool, rate: float): float

first 始点
last 終点
easeIn trueなら停止状態からだんだん加速するようなカーブ(ease-in)を描き、falseならだんだん減速して停止するようなカーブ(ease-out)を描く
rate 始点を0、終点を1としたときの0以上1以下の位置。 0より小さい場合は0にされ、1より大きい場合は1にされる
戻り値 始点と終点を2次関数補間した値
2次関数補間は、停止状態からだんだん加速したり、だんだん減速して停止するような曲線を描きます。
「qerp」は「Quadratic intERPolation」の略です。

54lib@rnd

「lib@rnd」は、intの乱数を取得する関数です。

func rnd(min: int, max: int): int

min 取得する乱数の下限
max 取得する乱数の上限
戻り値 min以上max以下の整数の乱数
シード値はアプリの起動時にミリ秒単位の時刻を用いて自動設定されるため、アプリ起動のたびに異なる乱数列が返ります。
maxとminの差がlib@intMaxを超えてはなりません。
疑似乱数の仕様はlib@makeRndと同様です。
表54-1: lib@rndの例外
発生条件 ビルド 例外コード
(16進数)
「min」が「max」より大きい dbgのみ E9170006
「max」と「min」の差がlib@intMaxを超える dbgのみ E9170006

55lib@rndBit64

「lib@rndBit64」は、bit64の乱数を取得する関数です。

func rndBit64(): bit64

戻り値 16進数で0以上FFFFFFFFFFFFFFFF以下の乱数
疑似乱数の仕様はlib@makeRndと同様です。

56lib@rndFloat

「lib@rndFloat」は、小数の乱数を取得する関数です。

func rndFloat(min: float, max: float): float

min 取得する乱数の下限
max 取得する乱数の上限。 ただしこの値未満の値が返る
戻り値 min以上max未満の小数の乱数
疑似乱数の仕様はlib@makeRndと同様です。
表56-1: lib@rndFloatの例外
発生条件 ビルド 例外コード
(16進数)
「min」が「max」以上である dbgのみ E9170006

57lib@rndUuid

「lib@rndUuid」は、UUIDバージョン4を生成する関数です。

func rndUuid(): []char

戻り値 UUIDバージョン4
UUIDバージョン4とは、「00000000-0000-4000-8000-000000000000」のような36文字で表されるデータ列で、生成するたびに異なるユニークな文字列として利用できます。 生成したUUIDのいずれか2つが偶然重複するには、期待値で約(=約230京)個生成する必要があり、現実には起こらないものとみなせます。
疑似乱数の仕様はlib@makeRndと同様です。

58lib@rot

「lib@rot」は、回転した座標を求める関数です。

func rot(x: &float, y: &float, centerX: float, centerY: float, angle: float)

x 回転させる座標X
y 回転させる座標Y
centerX 回転中心座標X
centerY 回転中心座標Y
angle 回転角度
centerXおよびcenterYを中心に、xおよびyの座標を回転させ、回転後の座標でxおよびyの値を更新します。

59lib@round

「lib@round」は、指定した桁を四捨五入する関数です。

func round(x: float, precision: int): float

x 任意の値
precision 桁の精度
戻り値 xを四捨五入した値
precisionには小数点以下何桁目を四捨五入するかを指定します。 例えば、「lib@round(1234.5678, 2)」は「1234.57」、「lib@round(1234.5678, -2)」は「1200」を返します。

60lib@same

「lib@same」は、floatの計算誤差を考慮して比較する関数です。

func same(n1: float, n2: float): bool

n1 比較する値1
n2 比較する値2
戻り値 ほぼ一致しているかどうか
浮動小数点型であるfloatは、計算すると誤差が生じますので、数学的には一致するはずの計算が、「=」演算子ではfalseを返すことがあります。 そこで、誤差を許容したfloat同士の一致を判定するにはsame関数を使います。
  • 「same」関数は、浮動小数点型で表現可能な数のうち24個分離れた数までを一致とみなす。
図60-1: lib@sameの仕様

61lib@sin

「lib@sin」は、正弦関数です。

func sin(x: float): float

x 任意の値
戻り値 」の値

62lib@sinh

「lib@sinh」は、双曲線正弦関数です。

func sinh(x: float): float

x 任意の値
戻り値 」の値

63lib@sleep

「lib@sleep」は、一定時間処理を停止させる関数です。

func sleep(ms: int)

ms 停止させる時間(単位はミリ秒)
1秒間停止させる場合は「lib@sleep(1000)」とします。

64lib@sqrt

「lib@sqrt」は、平方根です。

func sqrt(x: float): float

x 任意の値
戻り値 」の値

65lib@sysTime

「lib@sysTime」は、システム時刻を取得する関数です。

func sysTime(): int

戻り値 システム時刻
OSが起動してから現在までに経った時間をミリ秒で表す「システム時刻」を返します。

66lib@tan

「lib@tan」は、正接関数です。

func tan(x: float): float

x 任意の値
戻り値 」の値

67lib@tanh

「lib@tanh」は、双曲線正接関数です。

func tanh(x: float): float

x 任意の値
戻り値 」の値

68lib@toDegree

「lib@toDegree」は、ラジアンを度に変換する関数です。

func toDegree(rad: float): float

rad ラジアン
戻り値

69lib@toRad

「lib@toRad」は、度をラジアンに変換する関数です。

func toRad(degree: float): float

degree
戻り値 ラジアン
1544535535jaf