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 逆変換 |