「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

表示オプション

横に並べて表示:
変化行の前後のみ表示: