XScript 매뉴얼 · Chapter 31

MATH — 수학 유틸리티

MATH 는 삼각함수·거리·각도·비교 등 장비 제어에서 자주 쓰는 수학 함수를 모아둔 글로벌 객체입니다. 각도 기반 API 는 Degree 단위 가 기본입니다.

기본 예제

double x1 = 0.0;
double y1 = 0.0;
double x2 = 100.0;
double y2 = 100.0;
 
double dist = MATH.CalcDistance(x1, y1, x2, y2);
Log("DIST = {0}", dist);
 
double angle = MATH.CalcAngle(x1, y1, x2, y2);
Log("ANGLE = {0}", angle);
 
double a = 10.2;
double b = 9.3;
double min = MATH.Min(a, b);

주요 메서드

삼각함수 (Degree)

시그니처설명
double Sin(double deg)Sine
double Cos(double deg)Cosine
double Tan(double deg)Tangent
double Asin(double value) / Acos(double value) / Atan(double value)역 함수
double Atan2(double y, double x)사분면 고려 역탄젠트

기본 수학

시그니처설명
double Abs(double value)절댓값
double Sqrt(double value)제곱근
double Pow(double base, double exp)거듭제곱
double Log10(double value) / Log(double value)로그
double Exp(double value)지수
double Round(double value, int digits = 0)반올림
double Ceiling(double value) / Floor(double value)올림/내림

비교 · 집합

시그니처설명
double Min(double a, double b) / Max(double a, double b)최소/최대
double Clamp(double value, double min, double max)범위 고정

좌표 기하

시그니처설명
double CalcDistance(double x1, double y1, double x2, double y2)두 점 거리
double CalcAngle(double x1, double y1, double x2, double y2)두 점 각도(°)
double DegToRad(double deg) / RadToDeg(double rad)각도 변환

  • 삼각함수 기본은 Degree. Radian 이 필요하면 DegToRad 로 먼저 변환.
  • 소프트 리미트·속도 제한에 Clamp 를 적극 사용하면 조건문이 단순해짐.
  • 비교 연산에서 부동소수 오차가 걱정될 때는 MATH.Abs(a - b) < eps 패턴.

MATH 전체 함수 레퍼런스 (XUtilMath)

C# 소스 기준 — 스크립트에서 직접 호출 가능한 모든 함수.

기본 / 비교

함수의미
MATH.Abs(value)절대값
MATH.Min(a, b) / MATH.Max(a, b)최소 / 최대
MATH.Clamp(int, min, max) / (double, min, max)범위 제한
MATH.Floor(value)내림
MATH.Round(value, fix)소수점 fix 자리에서 반올림

삼각함수 (각도 단위 = degree)

함수의미
MATH.Sin(deg) / MATH.Cos(deg) / MATH.Tan(deg)사인 · 코사인 · 탄젠트
MATH.ASin(value) / MATH.ACos(value) / MATH.ATan(value)역삼각함수 (반환은 radian, 필요 시 RadToDeg)
MATH.ATan2(y, x)사분면 보존 역탄젠트
MATH.DegToRad(angle) / MATH.RadToDeg(angle)각도 단위 변환

좌표 기하

함수의미
MATH.CalcDistance(x1, y1, x2, y2)두 점 사이 거리
MATH.CalcAngle(x1, y1, x2, y2)두 점 사이 각도 (degree)
MATH.CalcRotate(cx, cy, sx, sy, angle, ref tx, ref ty)점 (sx,sy) 를 중심 (cx,cy) 기준 angle° 회전 → (tx,ty)
MATH.CalcOffsetPoint(cx, cy, sx, sy, offset, ref tx, ref ty)두 점 사이 거리 offset 위치의 점
MATH.TransformTrapezoidToSquare(x1..y4, x, y, ref newX, ref newY)사각형 좌표계 → 단위 정사각형 좌표계 보정 (왜곡 보정)
MATH.FindCrossPointTwoLines(...)두 직선의 교점 (4 가지 오버로드 — 점·각도 / 두 점 / Point 형)
MATH.FindIntersection(p1, p2, p3, p4, ...)두 선분의 교점
MATH.FindCircle(a, b, c, out center, out radius)세 점으로 원
MATH.CalcPointDistance(pt1, pt2)Point 형 두 점 거리
MATH.CalcPointAngle(pt1, pt2)Point 형 두 점 각도

선형 변환기 (LCVT — Linear Converter Table)

물리 단위 ↔ 기계 단위(엔코더 펄스, voltage, raw 등) 변환을 위한 다항/구간 선형 보간 테이블.

함수의미
MATH.LCVT_SetName(index, name)슬롯에 이름 부여
MATH.LCVT_Clear(index)슬롯 초기화
MATH.LCVT_Add(index, x, y, log=true)보정 점 추가
MATH.LCVT_GetValueY(index, x, ref y)x 입력 → y 보간 결과
MATH.LCVT_GetValueX(index, y, ref x)y 입력 → x 역변환