ソラマメ ブログ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 4人
オーナーへメッセージ
QRコード
QRCODE

気ままな一言

ご質問等、ページへのリンクはご自由に。気軽にコメントでもどうそ~
詳しいことは角川SIMのサポートセンターまでいらっしゃいませっ

世間知らずなので逆にいろいろ教えてください♪

2008年04月01日

LSL汎用関数 その2

数学っぽい関数です

//==============================================================================
// 角度(度数法)からrotation型に変換します
//  degree      角度
//  戻り値      rotation型の回転値を返します。
//==============================================================================
rotation deg2rot(vector degree)
{
    return llEuler2Rot(degree * DEG_TO_RAD);
}

【使用方法】
rotation rot = deg2rot(<45.0, 0, 0>);   // X軸45度


//============================================================================== // rotation型から角度(度数法)に変換します // rot 回転値 // 戻り値 角度をを返します。 //============================================================================== vector rot2deg(rotation rot) { return llRot2Euler(rot) * RAD_TO_DEG; } 【使用方法】 vector vec = rot2deg(<1, 0, 0, 1>); // X軸180度
//============================================================================== // 整数値の乱数を生成します // min 返す値の最小値 // max 返す値の最大値 // 戻り値 minからmaxまでの間の乱数値を返します。 (min <= value <= max) //============================================================================== integer rand(integer min,integer max) { return llFloor(llFrand(max - min + 1)) + min; } 【使用方法】 integer n = rand(3, 5); // 3 <= n <= 5 integer n = rand(-3, 5); // -3 <= n <= 5
//============================================================================== // 最大値を返します // values 比較する値(数値のみ有効) // 戻り値 valuesに含む値から最大値を返します。 //============================================================================== float max(list values) { return llList2Float(llListSort(values, 1, FALSE), 0); } 【使用方法】 float n = max([3, 5, 10, 4, 1]); // n = 10
//============================================================================== // 最小値を返します // values 比較する値(数値のみ有効) // 戻り値 valuesに含む値から最小値を返します。 //============================================================================== float min(list values) { return llList2Float(llListSort(values, 1, TRUE), 0); } 【使用方法】 float n = min([5, 7, 1, 9, 3]); // n = 1
//============================================================================== // 16進数を10進数に変換します。 // 16進文字列以外はすべて無視されます。 // hex 16進文字列 // 戻り値 10進に変換した値を返します。 //============================================================================== float hex2dec(string hex) { integer i = -llStringLength(hex); integer j; float n = 0; hex = llToLower(hex); while (i) { j = llSubStringIndex("0123456789abcdef", llGetSubString(hex, i, i)); i = -(~i); if (j >= 0) { n = (n * 16) + j; } } return n; } 【使用方法】 float value = hex2dec("ff"); // value = 255.0 float value = hex2dec("ffffffffff"); // value = 1099511627776.0
//============================================================================== // 10進数を16進数に変換します。 // number 数値 // 戻り値 16進に変換した文字列を返します。 //============================================================================== string dec2hex(integer number) { integer n; string hex; string top = ""; if (number & 0x80000000) { // number < 0 number = 0x0fffffff & number; top = "f"; } do { hex = llGetSubString("0123456789abcdef", (n = number % 16), n) + hex; } while (number /= 16); return top + hex; } 【使用方法】 string hex = dec2hex(30); // hex = "1e" string hex = dec2hex(-30); // hex = "ffffffe2"


同じカテゴリー(Tips)の記事画像
LSLを便利に書こう
同じカテゴリー(Tips)の記事
 lslint へ関数を追加 (2009-03-24 02:08)
 LSL汎用関数 訂正 (2009-03-04 01:26)
 SLサーバーの環境変数 (2008-08-12 21:51)
 LSL汎用関数 その4 (2008-06-14 11:35)
 LSL汎用関数 その3 (2008-05-29 19:12)
 LSLを便利に書こう (2008-05-04 19:46)
Posted by れむ at 13:54 │Tips