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)2 点間の距離
double CalcAngle(double x1, double y1, double x2, double y2)2 点間の角度(°)
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)2 点間の距離
MATH.CalcAngle(x1, y1, x2, y2)2 点間の角度(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)2 点間で距離 offset の位置の点
MATH.TransformTrapezoidToSquare(x1..y4, x, y, ref newX, ref newY)四角形座標系 → 単位正方形座標系へ補正(歪み補正)
MATH.FindCrossPointTwoLines(...)2 直線の交点(4 オーバーロード — 点·角度 / 2 点 / Point 型)
MATH.FindIntersection(p1, p2, p3, p4, ...)2 線分の交点
MATH.FindCircle(a, b, c, out center, out radius)3 点で円
MATH.CalcPointDistance(pt1, pt2)Point 型 2 点の距離
MATH.CalcPointAngle(pt1, pt2)Point 型 2 点の角度

線形変換器(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 逆変換