SASA 扩展NewOpcodes

矩阵 Matrix / Quat / Vector

矩阵、四元数、向量与圆相交

sa · 扩展 NewOpcodes · 需 CLEO + NewOpcodes

矩阵 / 四元数 / 向量运算。写法见 Lua / Redux

矩阵乘与旋转

MULTIPLY_MATRICES · 0D00
Matrix.Multiply

两矩阵相乘:result = matrixA * matrixB

0D00 MULTIPLY_MATRICES
in: matrixA, matrixB
out: handle
ROTATE_MATRIX_ON_AXIS · 0D01
Matrix.RotateOnAxis

绕轴旋转矩阵(角度度,combineOp 为 Rw 组合方式)。

0D01 ROTATE_MATRIX_ON_AXIS
in: self, axisX, axisY, axisZ, angle, combineOp

欧拉角读

GET_MATRIX_X_ANGLE · 0D02
Matrix.GetXAngle

取矩阵 X(right)欧拉角(度)。

0D02 GET_MATRIX_X_ANGLE
in: self
out: xAngle
GET_MATRIX_Y_ANGLE · 0D03
Matrix.GetYAngle

取 Y(up)欧拉角(度)。

0D03 GET_MATRIX_Y_ANGLE
in: self
out: yAngle
GET_MATRIX_Z_ANGLE · 0D04
Matrix.GetZAngle

取 Z(at)欧拉角(度)。

0D04 GET_MATRIX_Z_ANGLE
in: self
out: zAngle

位置 / 偏移

SET_MATRIX_POSITION · 0D05
Matrix.SetPosition

只改平移分量。

0D05 SET_MATRIX_POSITION
in: self, x, y, z
GET_MATRIX_POSITION · 0D06

取平移分量。

0D06 GET_MATRIX_POSITION
in: matrix
out: x, y, z
GET_COORDS_OFFSETS_RELATIVE_TO_MATRIX · 0D07

世界坐标 → 相对矩阵的局部坐标(逆变换)。

0D07 GET_COORDS_OFFSETS_RELATIVE_TO_MATRIX
in: x, y, z, matrix
out: x, y, z
SET_MATRIX_ROTATION · 0D08
Matrix.Rotate

用欧拉角设旋转,保留位置。

0D08 SET_MATRIX_ROTATION
in: self, x, y, z
COPY_MATRIX · 0D09
Matrix.Copy

深拷贝 16 个元素。

0D09 COPY_MATRIX
in: self, destination
GET_OFFSET_FROM_MATRIX_IN_WORLD_COORDS · 0D0A
Matrix.GetOffset

局部偏移 → 世界坐标。

0D0A GET_OFFSET_FROM_MATRIX_IN_WORLD_COORDS
in: self, x, y, z
out: x, y, z

单轴旋转

SET_MATRIX_X_ROTATION · 0D13

只设 X 旋转角(度)。

0D13 SET_MATRIX_X_ROTATION
in: matrix, angle
SET_MATRIX_Y_ROTATION · 0D14

只设 Y 旋转角。

0D14 SET_MATRIX_Y_ROTATION
in: matrix, angle
SET_MATRIX_Z_ROTATION · 0D15

只设 Z 旋转角。

0D15 SET_MATRIX_Z_ROTATION
in: matrix, angle

四元数

SET_MATRIX_ROTATION_FROM_QUAT · 0D16

用四元数写矩阵旋转。

0D16 SET_MATRIX_ROTATION_FROM_QUAT
in: matrix, quat
SET_QUAT_FROM_MATRIX · 0D17

矩阵旋转 → 四元数。

0D17 SET_QUAT_FROM_MATRIX
in: matrix, quat
ROTATE_QUAT_ON_AXIS · 0D18

四元数绕轴转。

0D18 ROTATE_QUAT_ON_AXIS
in: quat, x, y, z, angle, combineOp
GET_NORMALISED_QUAT · 0D19

单位化四元数。

0D19 GET_NORMALISED_QUAT
in: quat
out: quat
MULTIPLY_QUATS · 0D1A

四元数相乘。

0D1A MULTIPLY_QUATS
in: quat1, quat2
out: quat

向量 / 插值

NORMALISE_VECTOR · 0D1C

3D 向量单位化(原地)。

0D1C NORMALISE_VECTOR
in: vector
INTERPOLATE_MATRIX · 0D1D

两矩阵旋转 slerp 到 slerp(经四元数)。

0D1D INTERPOLATE_MATRIX
in: slerp, matrix1, matrix2, t
QUAT_SLERP · 0D1E

四元数 slerp,t 插值因子。

0D1E QUAT_SLERP
in: quatSlerp, fromQuat, toQuat, t

初始化 / 拆分量

INITIALISE_QUAT · 0D24

用轴+角(度)初始化四元数。

0D24 INITIALISE_QUAT
in: quat, x, y, z, angle
INITIALISE_MATRIX · 0D25

逐元素写满矩阵 16 槽。

0D25 INITIALISE_MATRIX
in: matrix, a..p
INITIALISE_VECTOR · 0D26

用 xyz 初始化向量。

0D26 INITIALISE_VECTOR
in: vector, x, y, z
GET_VECTOR_ELEMENTS · 0D28

拆向量 xyz。

0D28 GET_VECTOR_ELEMENTS
in: vector
out: x, y, z
GET_QUAT_ELEMENTS · 0D29

拆四元数分量(实现为 xyz+angle 语义以 JSON 为准)。

0D29 GET_QUAT_ELEMENTS
in: quat
out: x, y, z, angle

圆相交

FIND_INTERSECTION_BETWEEN_CIRCLES · 0D3F

两圆相交求点;相交才真。用在 if 里。

0D3F FIND_INTERSECTION_BETWEEN_CIRCLES
in: x1, y1, r1, x2, y2, r2
out: p1X, p1Y, p2X, p2Y

On this page