「Stand alone」の編集履歴(バックアップ)一覧はこちら
「Stand alone」(2013/04/05 (金) 12:19:41) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
自作した関数を記録するページ。
使ってもいいのよ。
&bold(){--ステップ(対象変数,指定値,1フレームの移動量)}
function _STEP(STeP1,STeP2,STeP3)
STeP4=STeP2-STeP1
if STeP4> STeP3 then STeP4= STeP3 end
if STeP4<-STeP3 then STeP4=-STeP3 end
return STeP1+STeP4 end
&bold(){--リミッター(対象変数,下限,上限)}
function _LIMIT(liM,liM_min,liM_max)
if liM>liM_max then liM=liM_max end
if liM<liM_min then liM=liM_min end
return liM end
&bold(){--ループ(対象変数,下限,上限)}
function _LOOP(lP,lP_min,lP_max)
if lP>lP_max then lP=lP_min end
if lP<lP_min then lP=lP_max end
return lP end
&bold(){--フォントゲージ(現在値,最大値,ゲージの長さ)}
function _FONTG(FoG1,FoG2,FoG3)
if FoG1>FoG2 then FoG1=FoG2 end
FoG4,FoG5=math.floor((FoG1/FoG2)*FoG3),""
for loop=1,FoG4,1 do FoG5=FoG5.."!" end
for loop=FoG4+1,FoG3,1 do FoG5=FoG5.."." end
return FoG5 end
&bold(){--2次元距離(X,Y)}
function _LEN2(x,y)
return math.sqrt(x*x+y*y) end
&bold(){--3次元距離(X,Y,Z)}
function _LEN3(x,y,z)
return math.sqrt(x*x+y*y+z*z) end
&bold(){--符号判別(対象変数)}
function _SGN(SgN)
if SgN>0 then SgN=1 elseif SgN<0 then SgN=-1 end
return SgN end
&bold(){--color用数値変換 (R,G,B [0-255])}
function _CONCOL(COnVR,COnVG,COnVB)
return math.floor(COnVR)*65536+math.floor(COnVG)*256+math.floor(COnVB) end
&bold(){--effect用数値変換(透明度,発光度,スペキュラの強さ,スペキュラ [0-15])}
function _CONEFF(COnV1,COnV2,COnV3,COnV4)
return math.floor(COnV1*16+COnV2)*256+math.floor(COnV3*16+COnV4) end
&bold(){--角度差(AgAp1xyz=ベクトル1 AgAp2xyz=ベクトル2)}
function _GAP(AgAp1x,AgAp1y,AgAp1z, AgAp2x,AgAp2y,AgAp2z)
nAi = _NAI(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z)
xxx,gaI,xxx = _GAI(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z)
AgAp=math.deg(math.acos(nAi))*_SGN(gaI)
if AgAp>=0 or AgAp<0 then return AgAp else return 0 end --計算エラー対策
end
&bold(){--角度差2(AgAp1xyz=ベクトル1 AgAp2xyz=ベクトル2) ※正規化しない}
function _GAP2(AgAp1x,AgAp1y,AgAp1z, AgAp2x,AgAp2y,AgAp2z)
nAi = _NAI2(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z)
xxx,gaI,xxx = _GAI2(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z)
AgAp=math.deg(math.acos(nAi))*_SGN(gaI)
if AgAp>=0 or AgAp<0 then return AgAp else return 0 end --計算エラー対策
end
&bold(){--内積(NAi123=ベクトル1 NAi456=ベクトル2)}
function _NAI(NAi1,NAi2,NAi3, NAi4,NAi5,NAi6)
NAi1,NAi2,NAi3=_SEI(NAi1,NAi2,NAi3)
NAi4,NAi5,NAi6=_SEI(NAi4,NAi5,NAi6)
NAi1=NAi1*NAi4+NAi2*NAi5+NAi3*NAi6
return NAi1 end
&bold(){--外積(GAi_a123=ベクトル1 GAi_b123=ベクトル2)}
function _GAI(GAi_a1,GAi_a2,GAi_a3, GAi_b1,GAi_b2,GAi_b3)
GAi_c1,GAi_c2,GAi_c3=(GAi_a2*GAi_b3-GAi_a3*GAi_b2),(GAi_a3*GAi_b1-GAi_a1*GAi_b3),(GAi_a1*GAi_b2-GAi_a2*GAi_b1)
GAi_c1,GAi_c2,GAi_c3=_SEI(GAi_c1,GAi_c2,GAi_c3)
return GAi_c1,GAi_c2,GAi_c3 end
&bold(){--二重外積(WGAi_a123=ベクトル1 WGAi_b123=ベクトル2)}
function _WGAI(WGAi_a1,WGAi_a2,WGAi_a3, WGAi_b1,WGAi_b2,WGAi_b3)
WGAi_c1,WGAi_c2,WGAi_c3=_GAI(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_b1,WGAi_b2,WGAi_b3)
WGAi_c1,WGAi_c2,WGAi_c3=_GAI(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_c1,WGAi_c2,WGAi_c3)
return WGAi_c1,WGAi_c2,WGAi_c3 end
&bold(){--正規化(ベクトル)}
function _SEI(SEi1,SEi2,SEi3)
do local length=math.sqrt(SEi1^2+SEi2^2+SEi3^2)
if length>0 then length=1/length else length=0 end
SEi1,SEi2,SEi3=SEi1*length,SEi2*length,SEi3*length
return SEi1,SEi2,SEi3 end end
&bold(){--内積2(NAi123=ベクトル1 NAi456=ベクトル2) ※正規化しない}
function _NAI2(NAi1,NAi2,NAi3, NAi4,NAi5,NAi6)
NAi1=NAi1*NAi4+NAi2*NAi5+NAi3*NAi6
return NAi1 end
&bold(){--外積2(GAi_a123=ベクトル1 GAi_b123=ベクトル2) ※正規化しない}
function _GAI2(GAi_a1,GAi_a2,GAi_a3, GAi_b1,GAi_b2,GAi_b3)
GAi_c1,GAi_c2,GAi_c3=(GAi_a2*GAi_b3-GAi_a3*GAi_b2),(GAi_a3*GAi_b1-GAi_a1*GAi_b3),(GAi_a1*GAi_b2-GAi_a2*GAi_b1)
return GAi_c1,GAi_c2,GAi_c3 end
&bold(){--二重外積2(WGAi_a123=ベクトル1 WGAi_b123=ベクトル2) ※正規化しない}
function _WGAI2(WGAi_a1,WGAi_a2,WGAi_a3, WGAi_b1,WGAi_b2,WGAi_b3)
WGAi_c1,WGAi_c2,WGAi_c3=_GAI2(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_b1,WGAi_b2,WGAi_b3)
WGAi_c1,WGAi_c2,WGAi_c3=_GAI2(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_c1,WGAi_c2,WGAi_c3)
return WGAi_c1,WGAi_c2,WGAi_c3 end
&bold(){--交点計算・線と円(axz=Aの座標,avxz=Aから伸びるベクトル,cxz=ボールの座標,cr=ボールの半径)}
function crsLC(ax,az,avx,avz, cx,cz,cr)
local ABX, ABZ = avx-ax, avz-az
local a,b = avz-az, ax-avx
local c = -(a*ax+b*az)
local EX,EZ,EY = -ABZ,ABX,0
EX,EY,EZ = _SEI(EX,0,EZ)
local div2=a*EX+b*EZ
if div2 then
local k = -(a*cx+b*cz+c)/div2
local xp,zp = cx+k*EX, cz+k*EZ
local S = math.sqrt(cr*cr-k*k)
local ABNX,ABNY,ABNZ = _SEI(ABX,0,ABZ)
local S_ABNX,S_ABNZ = S * ABNX, S * ABNZ
local CRBX,CRBZ = xp - S_ABNX, zp - S_ABNZ
local CRAX,CRAZ = xp + S_ABNX, zp + S_ABNZ
local k=math.abs(k)
return CRBX, CRBZ, CRAX, CRAZ, k end end