webcface.transform module

class webcface.transform.AxisSequence(value)[source]

Bases: IntEnum

オイラー角の回転順序 (ver3.0〜)

  • 右手系の座標系で、

内的回転(intrinsic rotation)でz軸,y軸,x軸の順に回転させる系 = 外的回転(extrinsic rotation)でX軸,Y軸,Z軸の順に回転させる系 = 回転行列がZ(α)Y(β)X(γ)と表される系 を、 AxisSequence::ZYX と表記する。 * ver2.3までの実装はすべてZYXで、現在もWebCFaceの内部表現は基本的にZYXの系である。 * またWebCFaceのインタフェースでオイラー角の回転角を指定する場合、 軸の指定順は内的回転を指す。(AxisSequenceにおける左から右の並び順と一致。)

XYX = 1
XYZ = 6
XZX = 4
XZY = 9
YXY = 5
YXZ = 11
YZX = 7
YZY = 2
ZXY = 8
ZXZ = 0
ZYX = 10
ZYZ = 3
class webcface.transform.Point(pos: Sequence[SupportsFloat])[source]

Bases: object

3次元or2次元の座標

手動でコンストラクタを呼んでもいいが、 PointをうけとるAPIは基本的に Sequence[SupportsFloat] を受け付け、 内部でPointに変換される。

property pos: Tuple[float, float, float]

座標を返す

2次元の場合は pos[0:2] を使う

set_pos(pos: Sequence[SupportsFloat]) None[source]

座標をセット

Parameters:

pos – 座標

2次元の場合 [float, float], 3次元の場合 [float, float, float] など

class webcface.transform.Rotation(az, ay, ax, rmat)[source]

Bases: object

3次元の回転 (ver3.0〜)

  • 内部ではz-y-x系のオイラー角または3x3回転行列で保持している。

  • 送受信時にはすべてこのzyxのオイラー角に変換される。

  • 2次元の回転を表すのにも使われ、

その場合オイラー角 rot() の最初の要素(=z軸周りの回転)を使って回転を表し、 残りの要素(x,y軸周りの回転)を0とする。

applied_to_point(other: Point | Sequence[SupportsFloat]) Point[source]

Point を回転させた結果を返す

Parameters:

other – 回転させる対象

applied_to_rotation(other: Rotation) Rotation[source]

Rotation を回転させた結果を返す

Parameters:

other – 回転させる対象

applied_to_transform(other: Transform) Transform[source]

Transform を回転させた結果を返す

Parameters:

other – 回転させる対象

inversed() Rotation[source]

逆回転を取得

property rot: Tuple[float, float, float]

回転角を取得

2次元の場合は rot[0] を使う

Deprecated since version ver3.0.

rot_2d() float[source]

2次元の回転角を取得 (ver3.0〜)

rot_axis_angle() Tuple[Tuple[float, float, float], float][source]

回転角を軸と角度((x, y, z), angle)として取得 (ver3.0〜)

rot_euler(axis=AxisSequence.ZYX) Tuple[float, float, float][source]

回転角をオイラー角として取得 (ver3.0〜)

Parameters:

axis – オイラー角の回転順序

rot_matrix() Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]][source]

回転角を回転行列として取得 (ver3.0〜)

rot_quat() Tuple[float, float, float, float][source]

回転角をクォータニオン(w, x, y, z)として取得 (ver3.0〜)

class webcface.transform.Transform(arg1: Point | Sequence[SupportsFloat] | Rotation, arg2: Rotation | SupportsFloat | None = None)[source]

Bases: object

3次元の座標と回転

内部ではx, y, zの座標とz-y-x系のオイラー角で保持している。

手動でコンストラクタを呼んでもいいが、 TransformをうけとるAPIは基本的にPointとRotationのタプルを受け付け、 内部でTransformに変換される。

平行移動のみの場合は translation() を使用する。 回転のみの場合はRotationだけ渡せば直接Transformに変換される

ver3.0〜 Pointを継承せず別のクラスとしての実装に変更

applied_to_point(other: Point | Sequence[SupportsFloat]) Point[source]

Point を回転+平行移動させた結果を返す

Parameters:

other – 変換する対象

applied_to_rotation(other: Rotation) Transform[source]

Rotation を回転+平行移動させた結果を返す

Parameters:

other – 変換する対象

Returns:

返り値はRotationではなくTransform。 applied_to_transformと同じ結果になる

applied_to_transform(other: Transform) Transform[source]

Transform を回転+平行移動させた結果を返す

Parameters:

other – 変換する対象対象

inversed() Transform[source]

逆変換を取得 (ver3.0〜)

property pos: Tuple[float, float, float]

座標を返す

2次元の場合は pos[0:2] を使う

property rot: Tuple[float, float, float]

回転角を取得

2次元の場合は rot[0] を使う

Deprecated since version ver3.0.

rot_axis_angle() Tuple[Tuple[float, float, float], float][source]

回転角を軸と角度((x, y, z), angle)として取得 (ver3.0〜)

rot_euler(axis=AxisSequence.ZYX) Tuple[float, float, float][source]

回転角をオイラー角として取得 (ver3.0〜)

Parameters:

axis – オイラー角の回転順序

rot_matrix() Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]][source]

回転角を回転行列として取得 (ver3.0〜)

rot_quat() Tuple[float, float, float, float][source]

回転角をクォータニオン(w, x, y, z)として取得 (ver3.0〜)

webcface.transform.convert_to_transform(origin: Point | Sequence[SupportsFloat] | Transform | Rotation | Tuple[Point | Sequence[SupportsFloat], Rotation | SupportsFloat]) Transform[source]
webcface.transform.identity() Transform[source]

なにもしないTransformを作成

webcface.transform.rot_2d(angle: SupportsFloat) Rotation[source]

2次元の回転を作成 (ver3.0〜)

rot_z() と同じ。

Parameters:

angle – 回転角

webcface.transform.rot_from_axis_angle(axis: Sequence[SupportsFloat], angle: SupportsFloat) Rotation[source]

軸と角度からRotationを作成

Parameters:
  • axis – 軸

  • angle – 角度

webcface.transform.rot_from_euler(angles: Sequence[SupportsFloat], axis=AxisSequence.ZYX) Rotation[source]

オイラー角からRotationを作成

Parameters:
  • angles – オイラー角

  • axis – オイラー角の回転順序

webcface.transform.rot_from_matrix(rmat: Sequence[Sequence[SupportsFloat]]) Rotation[source]

回転行列からRotationを作成

Parameters:

rmat – 回転行列

webcface.transform.rot_from_quat(quat: Sequence[SupportsFloat]) Rotation[source]

クォータニオンからRotationを作成

Parameters:

quat – クォータニオン (w, x, y, z)

webcface.transform.rot_x(angle: SupportsFloat) Rotation[source]

x軸周りの回転を作成 (ver3.0〜)

Parameters:

angle – 回転角

webcface.transform.rot_y(angle: SupportsFloat) Rotation[source]

y軸周りの回転を作成 (ver3.0〜)

Parameters:

angle – 回転角

webcface.transform.rot_z(angle: SupportsFloat) Rotation[source]

z軸周りの回転を作成 (ver3.0〜)

Parameters:

angle – 回転角

webcface.transform.translation(pos: Point | Sequence[SupportsFloat]) Transform[source]

平行移動のみをするTransformを作成 (ver3.0〜)