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: handleROTATE_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: xAngleGET_MATRIX_Y_ANGLE · 0D03
Matrix.GetYAngle
取 Y(up)欧拉角(度)。
0D03 GET_MATRIX_Y_ANGLE
in: self
out: yAngleGET_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, zGET_MATRIX_POSITION · 0D06
取平移分量。
0D06 GET_MATRIX_POSITION
in: matrix
out: x, y, zGET_COORDS_OFFSETS_RELATIVE_TO_MATRIX · 0D07
世界坐标 → 相对矩阵的局部坐标(逆变换)。
0D07 GET_COORDS_OFFSETS_RELATIVE_TO_MATRIX
in: x, y, z, matrix
out: x, y, zSET_MATRIX_ROTATION · 0D08
Matrix.Rotate
用欧拉角设旋转,保留位置。
0D08 SET_MATRIX_ROTATION
in: self, x, y, zCOPY_MATRIX · 0D09
Matrix.Copy
深拷贝 16 个元素。
0D09 COPY_MATRIX
in: self, destinationGET_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, angleSET_MATRIX_Y_ROTATION · 0D14
只设 Y 旋转角。
0D14 SET_MATRIX_Y_ROTATION
in: matrix, angleSET_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, quatSET_QUAT_FROM_MATRIX · 0D17
矩阵旋转 → 四元数。
0D17 SET_QUAT_FROM_MATRIX
in: matrix, quatROTATE_QUAT_ON_AXIS · 0D18
四元数绕轴转。
0D18 ROTATE_QUAT_ON_AXIS
in: quat, x, y, z, angle, combineOpGET_NORMALISED_QUAT · 0D19
单位化四元数。
0D19 GET_NORMALISED_QUAT
in: quat
out: quatMULTIPLY_QUATS · 0D1A
四元数相乘。
0D1A MULTIPLY_QUATS
in: quat1, quat2
out: quat向量 / 插值
NORMALISE_VECTOR · 0D1C
3D 向量单位化(原地)。
0D1C NORMALISE_VECTOR
in: vectorINTERPOLATE_MATRIX · 0D1D
两矩阵旋转 slerp 到 slerp(经四元数)。
0D1D INTERPOLATE_MATRIX
in: slerp, matrix1, matrix2, tQUAT_SLERP · 0D1E
四元数 slerp,t 插值因子。
0D1E QUAT_SLERP
in: quatSlerp, fromQuat, toQuat, t初始化 / 拆分量
INITIALISE_QUAT · 0D24
用轴+角(度)初始化四元数。
0D24 INITIALISE_QUAT
in: quat, x, y, z, angleINITIALISE_MATRIX · 0D25
逐元素写满矩阵 16 槽。
0D25 INITIALISE_MATRIX
in: matrix, a..pINITIALISE_VECTOR · 0D26
用 xyz 初始化向量。
0D26 INITIALISE_VECTOR
in: vector, x, y, zGET_VECTOR_ELEMENTS · 0D28
拆向量 xyz。
0D28 GET_VECTOR_ELEMENTS
in: vector
out: x, y, zGET_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