XScript 매뉴얼 · Chapter 31

MATH — 수학 유틸리티

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

기본 예제

xscript
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 Round(double value, int fix)소수점 fix 자리에서 반올림 (인자 2개 필수, 기본값 없음)
double 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)역삼각함수 (반환 단위 degree)
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 역변환