したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

RCのためのLuaの関数を集めるスレ

1name=NONE:2005/06/03(金) 13:35:07
Luaの関数はスクリプトより汎用性高いから、実はプログラミング初心者にはLuaを薦めたほうがいいんじゃないか?とおもった。
そこで、このスレに使いやすい関数を集めてみませんか?

6name=NONE:2005/06/17(金) 09:43:46
-- move2D() 開始点設置
-- dis : 原点からのZ軸方向の距離(0.3〜600程度)
-- width : X軸(-32〜32)
-- height: Y軸(-32〜32)
-- k:set2Dの戻り値
-- 使用例 : move2D(0.3, 0.3, 1.5, k)
function move2D(width, height, dis, k)
-- 原点
cx=_X(0)-_ZX(0)*dis
cy=_Y(0)-_ZY(0)*dis
cz=_Z(0)-_ZZ(0)*dis
--描画開始点計算
w=k*(-width)/dis
h=k*(-height)/dis
x=_XX(0)*w+_YX(0)*h
y=_XY(0)*w+_YY(0)*h
z=_XZ(0)*w+_YZ(0)*h
--開始点設置
dummy=_MOVE3D(cx+x, cy+y, cz+z)

end

7name=NONE:2005/06/17(金) 09:45:39
-- line2D() 線を描画(0.3〜600程度)
-- dis : 原点からのZ軸方向の距離
-- width : X軸(-32〜32)
-- height: Y軸(-32〜32)
-- k:set2Dの戻り値
-- 使用例 : line2D(0.3, 0.3, 1.5, k)

function line2D(width, height, dis, k)

-- 原点
cx=_X(0)-_ZX(0)*dis
cy=_Y(0)-_ZY(0)*dis
cz=_Z(0)-_ZZ(0)*dis

--描画目標点計算

w=k*(-width)/dis
h=k*(-height)/dis

x=_XX(0)*w+_YX(0)*h
y=_XY(0)*w+_YY(0)*h
z=_XZ(0)*w+_YZ(0)*h

--描画開始
dummy=_LINE3D(cx+x, cy+y, cz+z)
end

8name=NONE:2005/06/17(金) 17:59:31
--棒グラフ表示関数(値、値の最大値)
function bargraph(value, max)
local maxlength = 10 --グラフの最大長
local point = "*" --ポイントに使う文字
local bar = ""
length = maxlength * value / max
for i=0, length-1 do
bar = bar..point
end
return bar
end
--

--使用例 Basicに組み込む場合
out(10, bargraph(-ENGINE, 2500))

98:2005/06/17(金) 18:59:47
function bargraph(value, max)
local maxlength = 10
local point = "*"
length = maxlength * value / max
return string.rep (point, length)
end
もっと簡潔に書けた。

108:2005/06/17(金) 21:07:04
--16進数を10進数に変換
function hextodec(x)
local n = tonumber(string.sub(x, -1, -1))
if n == nil then n = hextable[string.sub(x, -1, -1)] end
if string.len(x) == 1 then return n
else return hextodec(string.sub(x, 1, -2)) * 16 + n end
end
hextable = { a = 10, b = 11, c = 12, d = 13, e = 14, f = 15 }
使用例
out(1, hextodec("ffffff"))
_SETCOLOR(hextodec("ffcc99")))
色の16進指定にも使える。

11name=NONE:2005/06/18(土) 03:55:55
-- LongValue() 小数第三位以上の数値を文字列として得る
-- 使用例: out(0,LongValue(_FPS()))
function LongValue(num)
local ret = string.gsub(string.format("%q",num),"%p(%d*)(.*)(%d*)%p","%1 %2%3")
return ret
end

10進数値文字列を表示しようとすると小数二桁に丸められてしまうのを回避する。
%1と%2の間にスペースが一つ入ってるのがミソであり肝であり苦肉の作。

12name=NONE:2006/03/21(火) 18:28:35
age


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板