문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. =수학 라이브러리 예제= ==개요== 코사인, 사인 등의 삼각함수와 상용로그, 제곱근 등의 수학함수 등을 피니엔진에서 사용하게 할 수 있는 수학 라이브러리 예제입니다. 사용 방법은, module 폴더에 아래의 내용으로 mathdef.lnx 와 PiniMath.lua 파일 둘 다 작성하신 뒤, 사용하시기 전에 <code>[스크립트 실행="예" 파일명="mathdef.lnx" ]</code> 를 실행하면 됩니다. * 모든 삼각함수는 "도" 를 단위로 사용합니다. ==파일 내용== mathdef.lnx <lnx> #매크로 목록 [스크립트 실행="아니오" 파일명="PiniMath.lua" ] !라디안{ "<p class='title'>라디안</p>도 단위의 각도를 라디안으로 변환합니다."| {1| 수| ""| 0| "라디안 각도로 바꿀 숫자를 입력합니다."} } !각도{ "<p class='title'>각도</p>라디안 단위의 각도를 도 단위로 변환합니다."| {1| 수| ""| 0| "도 각도로 바꿀 숫자를 입력합니다."} } !사인{ "<p class='title'>사인</p>삼각함수 사인에 대한 값을 반환합니다."| {1| 수| ""| 0| "사인 함수의 입력값입니다."} } !코사인{ "<p class='title'>코사인</p>삼각함수 코사인에 대한 값을 반환합니다."| {1| 수| ""| 0| "코사인 함수의 입력값입니다."} } !아크사인{ "<p class='title'>아크사인</p>삼각함수 아크사인에 대한 값을 반환합니다."| {1| 수| ""| 0| "아크사인 함수의 입력값입니다."} } !아크코사인{ "<p class='title'>아크코사인</p>삼각함수 아크코사인에 대한 값을 반환합니다."| {1| 수| ""| 0| "아크코사인 함수의 입력값입니다."} } !탄젠트{ "<p class='title'>탄젠트</p>삼각함수 탄젠트에 대한 값을 반환합니다."| {1| 수| ""| 0| "탄젠트 함수의 입력값입니다."} } !아크탄젠트{ "<p class='title'>아크탄젠트</p>삼각함수 아크탄젠트에 대한 값을 반환합니다. 수1만 있을 경우 수1에 대한 아크탄젠트를, 수1과 수2가 모두 있을 경우 수1/수2 에 대한 아크탄젠트 값을 반환합니다."| {1| 수1| ""| 0| "아크탄젠트 함수의 입력값입니다."}| {1| 수2| ""| 0| "아크탄젠트 함수의 입력값입니다."} } !절대값{ "<p class='title'>절대값</p>절대값에 대한 값을 반환합니다."| {1| 수| ""| 0| "절대값을 구할 수 입니다."} } !자연로그{ "<p class='title'>자연로그</p>자연로그 함수에 대한 값을 반환합니다."| {1| 수| ""| 0| "자연로그 함수의 입력값입니다."} } !상용로그{ "<p class='title'>상용로그</p>상용로그 함수에 대한 값을 반환합니다."| {1| 수| ""| 0| "상용로그 함수의 입력값입니다."} } !초월함수{ "<p class='title'>초월함수</p>초월함수에 대한 값을 반환합니다."| {1| 수| ""| 0| "초월함수의 입력값입니다."} } !제곱승{ "<p class='title'>제곱승</p>밑수를 승수 수 만큼 곱한 값을 반환합니다."| {1| 밑| ""| 0| "밑수입니다."}| {1| 승수| ""| 0| "승수입니다."} } !최대값{ "<p class='title'>최대값</p>두 수 중 최대값을 반환합니다."| {1| 수1| ""| 0| "최대값을 구할 첫번째 수 입니다."}| {1| 수2| ""| 0| "최대값을 구할 두번째 수 입니다."} } !최소값{ "<p class='title'>최소값</p>두 수 중 최소값을 반환합니다."| {1| 수1| ""| 0| "최소값을 구할 첫번째 수 입니다."}| {1| 수2| ""| 0| "최소값을 구할 두번째 수 입니다."} } !제곱근{ "<p class='title'>제곱근</p>입력된 수의 제곱근을 반환합니다."| {1| 수| ""| 0| "제곱근을 구할 값입니다."} } !원주율{ "<p class='title'>원주율</p>원주율을 반환합니다."| } !자연상수{ "<p class='title'>자연상수</p>자연상수를 반환합니다."| } #매크로 루아함수 목록 @매크로 라디안: [[LNX_MATH_RAD]] @매크로 각도: [[LNX_MATH_DEG]] @매크로 사인: [[LNX_MATH_SIN]] @매크로 코사인: [[LNX_MATH_COS]] @매크로 아크사인: [[LNX_MATH_ASIN]] @매크로 아크코사인: [[LNX_MATH_ACOS]] @매크로 탄젠트: [[LNX_MATH_TAN]] @매크로 아크탄젠트: [[LNX_MATH_ATAN]] @매크로 절대값: [[LNX_MATH_ABS]] @매크로 자연로그: [[LNX_MATH_LOG]] @매크로 상용로그: [[LNX_MATH_LOG10]] @매크로 초월함수: [[LNX_MATH_EXP]] @매크로 제곱승: [[LNX_MATH_POW]] @매크로 최대값: [[LNX_MATH_MAX]] @매크로 최소값: [[LNX_MATH_MIN]] @매크로 제곱근: [[LNX_MATH_SQRT]] @매크로 원주율: [[LNX_MATH_PI]] @매크로 자연상수: [[LNX_MATH_E]] </lnx> PiniMath.lua <code> --최초 1회만 불리는 코드는 여기다 적어주세요. function LNX_MATH_RAD(vm,stck) local value = vm:ARGU("라디안","수",0) vm:returnValue(math.rad(value)) end function LNX_MATH_DEG(vm,stck) local value = vm:ARGU("각도","수",0) vm:returnValue(math.deg(value)) end function LNX_MATH_SIN(vm,stck) local value = vm:ARGU("사인","수",0) value = math.rad(value) vm:returnValue(math.sin(value)) end function LNX_MATH_COS(vm,stck) local value = vm:ARGU("코사인","수",0) value = math.rad(value) vm:returnValue(math.cos(value)) end function LNX_MATH_ASIN(vm,stck) local value = vm:ARGU("아크사인","수",0) vm:returnValue(math.deg(math.asin(value))) end function LNX_MATH_ACOS(vm,stck) local value = vm:ARGU("아크코사인","수",0) vm:returnValue(math.deg(math.acos(value))) end function LNX_MATH_TAN(vm,stck) local value = vm:ARGU("탄젠트","수",0) value = math.rad(value) vm:returnValue(math.tan(value)) end function LNX_MATH_ATAN(vm,stck) local value1 = vm:ARGU("아크탄젠트","수1",0) local value2 = vm:ARGU("아크탄젠트","수2",nil) if value2 then vm:returnValue(math.deg(math.atan2(value1,value2))) else vm:returnValue(math.deg(math.atan(value1))) end end function LNX_MATH_ABS(vm,stck) local value = vm:ARGU("절대값","수",0) vm:returnValue(math.abs(value)) end function LNX_MATH_LOG(vm,stck) local value = vm:ARGU("자연로그","수",0) vm:returnValue(math.log(value)) end function LNX_MATH_LOG10(vm,stck) local value = vm:ARGU("상용로그","수",0) vm:returnValue(math.log10(value)) end function LNX_MATH_EXP(vm,stck) local value = vm:ARGU("초월함수","수",0) vm:returnValue(math.exp(value)) end function LNX_MATH_POW(vm,stck) local base = vm:ARGU("제곱승","밑",0) local power = vm:ARGU("제곱승","승수",0) vm:returnValue(math.pow(base,power)) end function LNX_MATH_MAX(vm,stck) local value1 = vm:ARGU("최대값","수1",0) local value2 = vm:ARGU("최대값","수2",0) vm:returnValue(math.max(value1,value2)) end function LNX_MATH_MIN(vm,stck) local value1 = vm:ARGU("최소값","수1",0) local value2 = vm:ARGU("최소값","수2",0) vm:returnValue(math.min(value1,value2)) end function LNX_MATH_SQRT(vm,stck) local value = vm:ARGU("제곱근","수",0) vm:returnValue(math.sqrt(value)) end function LNX_MATH_PI(vm,stck) -- [원주율] 매크로는 인자가 없습니다. vm:returnValue(math.pi) end function LNX_MATH_E(vm,stck) -- [자연상수] 매크로는 인자가 없습니다. vm:returnValue(math.exp(1)) end local function m(XVM) -- 함수 정의용 루아 파일이므로, -- 아무 것도 하지 않습니다. end return m </code> ==사용 예제== 다음은 예제 코드입니다. <lnx>[스크립트 실행="예" 파일명="mathdef.lnx" ] [로그 텍스트="시작" ] [로그 텍스트=[사인 수=0 ]] [로그 텍스트=[사인 수=45 ]] [로그 텍스트=[사인 수=90 ]] [로그 텍스트=[사인 수=135 ]] [로그 텍스트=[사인 수=180 ]] [로그 텍스트=[사인 수=225 ]] [로그 텍스트=[사인 수=270 ]] [로그 텍스트=[사인 수=315 ]] [로그 텍스트=[사인 수=360 ]] [로그 텍스트="끝" ]</lnx> 그리고 예제 코드의 실행 결과입니다. http://i.imgur.com/gLDGXfd.png ==지원 매크로 목록== 다음은 이 라이브러리로 지원하는 매크로 목록입니다. 라디안, 각도, 사인, 코사인, 아크사인, 아크코사인, 탄젠트, 아크탄젠트, 절대값, 자연로그, 상용로그, 초월함수, 제곱승, 최대값, 최소값, 제곱근, 원주율, 자연상수 PiniApi:MathExample 문서로 돌아갑니다.