2.05.組み込み関数2

以下の追加の組み込み関数が存在します(データ変換,グラフィックス関係等)。

戻り値のない関数は、式の中では使えません。


charcode() 文字のコードを返します。

charfrom() コードに対応する文字を返します。

clamp() 数値が指定した範囲におさまるように変換します。

colalpha() 透明度付きで描画色を設定します。(戻り値なし)

coloralpha() 透明度付きで描画色を設定します。(戻り値なし)

fillarea() 領域の塗りつぶしを行います。(戻り値なし)

fpoly() 多角形を塗りつぶします。(戻り値なし)

frombinstr() 2進数表記の文字列を数値に変換して返します。整数のみ対応です。

fromhexstr() 16進数表記の文字列を数値に変換して返します。整数のみ対応です。

poly() 多角形を描画します。(戻り値なし)

radacos() ラジアン版のアークコサイン関数です。

radasin() ラジアン版のアークサイン関数です。

radatan() ラジアン版のアークタンジェント関数です。

radatan2() ラジアン版のアークタンジェント2関数です。

radcos() ラジアン版のコサイン関数です。

radsin() ラジアン版のサイン関数です。

radtan() ラジアン版のタンジェント関数です。

randint() 指定した範囲の整数の乱数を返します。

recthit() 四角形同士の当たり判定を行います。

remap() ある範囲内の値を、別の範囲内の値に変換します。

tobinstr() 数値を2進数表記の文字列に変換して返します。整数のみ対応です。

tofloat() 文字列を数値に変換して返します。小数部も含めて変換します。

tohankaku() 文字列中の全角文字を半角文字に変換して返します。

tohexstr() 数値を16進数表記の文字列に変換して返します。整数のみ対応です。

toint() 引数を整数に変換して返します。小数部は切り捨てます。

tolower() 文字列中のアルファベットを小文字に変換して返します。

tostr() 数値を文字列に変換して返します。小数部も含めて変換します。

toupper() 文字列中のアルファベットを大文字に変換して返します。

tozenkaku() 文字列中の半角文字を全角文字に変換して返します。

transimg() 透明画像変換を行います。(戻り値なし)

wrap() 数値が指定した範囲におさまるように剰余を使って変換します。


2.5.1.組み込み関数2の詳細


--

charcode(a1)

またはcharcode(a1,a2)

文字a1のコードを返します(文字コードはUTF-16です)。

a2を指定すると、文字列a1のa2番目の位置の文字のコードを返します。

位置は1文字目を0として数えます。

2コードで1文字となる文字cについては、

a=charcode(c,0)

b=charcode(c,1)

でコードa,bを取得できます。


--

charfrom(a1)

またはcharfrom(a1,a2)

コードa1に対応する文字を返します(文字コードはUTF-16です)。

2コードで1文字となる文字については、

a1,a2でコードを2個指定すると、対応する文字を返します。

(2コードで1文字となる文字は、古いPCでは表示できない場合があります)


--

clamp(x,min,max)

数値xが指定した範囲(min~max)におさまるように変換します。

数値xが数値minより小さければminを返します。

数値xが数値maxより大きければmaxを返します。

それ以外であれば数値xをそのまま返します。


--

colalpha(c,alpha)

透明度付きで描画色を設定します。

色cは RGB各8ビット、合計24ビットの数値で色を指定します。

alphaには透明度を0-255までの数値で指定します(小さいほど透明になります)。

(戻り値なし)


--

coloralpha(r,g,b,alpha)

透明度付きで描画色を設定します。

r,g,bは 赤,緑,青の輝度を 0-255までの数値で指定します。

alphaには透明度を0-255までの数値で指定します(小さいほど透明になります)。

(戻り値なし)


--

fillarea(x,y,th,bc)

座標(x,y)を開始点として、領域の塗りつぶしを行います。

しきい値thと境界色bcは省略可能です。

しきい値thには 同色と判定する許容値を指定します。範囲は0-255です。

しきい値thを省略すると、0を指定したことになります。

境界色bcには、RGB各8ビット、合計24ビットの数値で 色を指定します。

境界色bcを指定すると、境界色に囲まれた領域を塗りつぶします。

境界色bcを省略した場合は、開始点と同一色の領域を塗りつぶします。


現状、HTML5のcanvas機能の にじみ のため、しきい値を設定しないと、

うまく塗りつぶせない場合があります。


(戻り値なし)


--

fpoly(x,y,a1,a2)

多角形を塗りつぶします。

(輪郭のみを表示したいときはpoly()を使用してください)

xには、多角形の頂点のx座標を格納した配列変数名を指定します。

yには、多角形の頂点のy座標を格納した配列変数名を指定します。

(x,yには[ ]をつけないで配列変数名だけを指定します)

a1には配列変数の添字の最小値を指定します。

a2には配列変数の添字の最大値を指定します。


例えば、

x[0]=50

y[0]=0

x[1]=0

y[1]=100

x[2]=100

y[2]=100

fpoly(x,y,0,2)

とすると、三角形を塗りつぶして表示します。


(戻り値なし)


--

frombinstr(a1)

2進数表記の文字列a1を数値に変換して返します。整数のみ対応です。


--

fromhexstr(a1)

16進数表記の文字列a1を数値に変換して返します。整数のみ対応です。


--

poly(x,y,a1,a2,flg)

多角形を描画します。

(内部を塗りつぶしたいときはfpoly()を使用してください)

xには、多角形の頂点のx座標を格納した配列変数名を指定します。

yには、多角形の頂点のy座標を格納した配列変数名を指定します。

(x,yには[ ]をつけないで配列変数名だけを指定します)

a1には配列変数の添字の最小値を指定します。

a2には配列変数の添字の最大値を指定します。

flgには、多角形を閉じるかどうかを指定します。

flgに0を指定すると、多角形を閉じます(デフォルト動作)。

flgに0以外を指定すると、多角形を閉じません(折れ線の描画になります)。

flgは省略可能です。省略した場合には0を指定したことになります。


例えば、

x[0]=50

y[0]=0

x[1]=0

y[1]=100

x[2]=100

y[2]=100

poly(x,y,0,2)

とすると、三角形を表示します。


(戻り値なし)


--

radacos(a1)

a1のアークコサインを返します。単位はラジアンです。

戻り値の範囲は 0~PI になります。


--

radasin(a1)

a1のアークサインを返します。単位はラジアンです。

戻り値の範囲は -PI/2~PI/2 になります。


--

radatan(a1)

a1のアークタンジェントを返します。単位はラジアンです。

戻り値の範囲は -PI/2~PI/2 になります。


--

radatan2(y,x)

座標(x,y)のアークタンジェント2を返します。単位はラジアンです。

戻り値の範囲は -PI~PI になります。

引数の順番が y,xの順であるため注意が必要です。


--

radcos(a1)

a1のコサインを返します。a1の単位はラジアンです。


--

radsin(a1)

a1のサインを返します。a1の単位はラジアンです。


--

radtan(a1)

a1のタンジェントを返します。a1の単位はラジアンです。


--

randint(a1,a2)

指定した範囲(a1~a2)の整数の乱数を返します。

例えば、ret=randint(1,6) とすると 1-6 までのいずれかの整数の数値がretに返ります。

また 例えば、ret=randint(0,2) とすると 0,1,2 のいずれかの数値がretに返ります。

また 例えば、ret=randint(-1,1) とすると -1,0,1 のいずれかの数値がretに返ります。


--

recthit(x1,y1,w1,h1,x2,y2,w2,h2)

四角形同士の当たり判定を行います。

左上座標が(x1,y1)で幅w1,高さh1の四角形と、

左上座標が(x2,y2)で幅w2,高さh2の四角形とが、

重なった部分がある場合に1を返します。

そうでなければ0を返します。

幅と高さは0より大きい値である必要があります。


--

remap(x,minx,maxx,miny,maxy)

ある範囲内(minx~maxx)の値xを、別の範囲内(miny~maxy)の値yに変換します。

具体的には、

y=miny+(x-minx)*(maxy-miny)/(maxx-minx)

を計算して返します。

これは、比例式 maxx-x:x-minx = maxy-y:y-miny が成り立つような値yを返すことになります。


--

tobinstr(a1)

数値a1を2進数表記の文字列に変換して返します。整数のみ対応です。


--

tofloat(a1)

文字列a1を数値に変換して返します。小数部も含めて変換します。


--

tohankaku(a1,mode)

文字列a1の中の全角文字を半角文字に変換して返します。

modeに以下の文字を含めることで、変換の種類を指定できます。

a アルファベットを半角に変換します

n 数字を半角に変換します

p 記号を半角に変換します

s スペースを半角に変換します

k カタカナを半角に変換します

(「ー」「・」もカタカナ扱いのため半角になります。

また「。」「、」「「」「」」は記号扱いのため p指定で半角になります)

t ひらがなを半角カタカナに変換します

(副作用として「ー」「・」およびカタカナも半角になります)

v 濁点を分離します (「ガ」→「ガ」等) (半濁点も分離します「パ」→「パ」等)

d 分離した濁点「゛」を半角に変換します (分離した半濁点「゜」も半角に変換します)


modeは"anp"のように複数の変換を一括で指定できます。

modeを省略すると "anpskd" を指定したことになります。


--

tohexstr(a1)

数値a1を16進数表記の文字列に変換して返します。整数のみ対応です。


--

toint(a1)

引数a1を整数に変換して返します。小数部は切り捨てます。


--

tolower(a1)

文字列a1の中のアルファベットを小文字に変換して返します。


--

tostr(a1)

数値a1を文字列に変換して返します。小数部も含めて変換します。


--

toupper(a1)

文字列a1の中のアルファベットを大文字に変換して返します。


--

tozenkaku(a1,mode)

文字列a1の中の半角文字を全角文字に変換して返します。

modeに以下の文字を含めることで、変換の種類を指定できます。

a アルファベットを全角に変換します

n 数字を全角に変換します

p 記号を全角に変換します

s スペースを全角に変換します

k カタカナを全角に変換します

(「ー」「・」もカタカナ扱いのため全角になります。

また「。」「、」「「」「」」は記号扱いのため p指定で全角になります)

h カタカナをひらがなに変換します

(副作用として「ー」「・」「ヷ」「ヺ」も全角になります)

t ひらがなをカタカナに変換します

m 濁点を結合します (「ガ」→「ガ」等) (半濁点も結合します「パ」→「パ」等)

v 濁点を分離します (「ガ」→「ガ」等) (半濁点も分離します「パ」→「パ」等)

d 分離した濁点「゙」を全角に変換します (分離した半濁点「゚」も全角に変換します)


modeは"anp"のように複数の変換を一括で指定できます。

modeを省略すると "anpskd" を指定したことになります。


--

transimg(img,c,th)

透明画像変換を行います。

Image変数 imgに格納した画像の 色cの部分を、透明にします。

色cは RGB各8ビット、合計24ビットの数値で色を指定します。

しきい値thには 同色と判定する許容値を指定します。範囲は0-255です。

しきい値thを省略すると、0を指定したことになります。

(戻り値なし)


--

wrap(x,min,max)

数値xが指定した範囲(min~max)におさまるように剰余(%)を使って変換します。

具体的には、t=(x-min)%(max-min) を計算し、

t<0 のときには y=t+max を返します。また、

t>=0 のときには y=t+min を返します。

これによって、片方の境界を越えた場合に、反対側の境界から出てくるような動作を実現できます。

注意点として、min<max であれば、戻り値は常にmaxより小さくなります。


(2019-4-15)