10using System.Collections;
11using System.Collections.Generic;
30 private static Vector3 VEC_A =
new Vector3(0.5f, 0.2f, 0.8f);
31 private static Vector3 VEC_B =
new Vector3(0.13f, 0.98f, 3000f);
35 Assert.That(AreVector3sEqual(VEC_A.Then(VEC_B.From(VEC_A)), VEC_B));
40 Assert.That(AreVector3sEqual(VEC_A.Then(VEC_A.To(VEC_B)), VEC_B));
45 Assert.That(AreVector3sEqual(VEC_B.Then(VEC_A.From(VEC_B)), VEC_A));
50 Assert.That(AreVector3sEqual(VEC_B.Then(VEC_B.To(VEC_A)), VEC_A));
53 private static bool AreVector3sEqual(Vector3 a, Vector3 b) {
54 return (a - b).magnitude <
EPSILON;
61 private static Quaternion QUAT_A {
62 get {
return Quaternion.AngleAxis(90f, Vector3.up); }
64 private static Quaternion QUAT_B {
65 get {
return Quaternion.AngleAxis(43f, Vector3.one.normalized); }
70 Assert.That(AreQuaternionsEqual(QUAT_A.Then(QUAT_B.From(QUAT_A)), QUAT_B));
75 Assert.That(AreQuaternionsEqual(QUAT_A.Then(QUAT_A.To(QUAT_B)), QUAT_B));
80 Assert.That(AreQuaternionsEqual(QUAT_B.Then(QUAT_A.From(QUAT_B)), QUAT_A));
85 Assert.That(AreQuaternionsEqual(QUAT_B.Then(QUAT_B.To(QUAT_A)), QUAT_A));
88 private static bool AreQuaternionsEqual(Quaternion a, Quaternion b) {
89 return (a.ToAngleAxisVector() - b.ToAngleAxisVector()).magnitude <
EPSILON;
97 get {
return new Pose(VEC_A, QUAT_A); }
100 get {
return new Pose(VEC_B, QUAT_B); }
123 private bool ArePosesEqual(
Pose a,
Pose b) {
132 private Matrix4x4 MAT_A {
134 return Matrix4x4.TRS(Vector3.right * 100f,
135 Quaternion.AngleAxis(77f, Vector3.one),
140 private Matrix4x4 MAT_B {
142 return Matrix4x4.TRS(Vector3.one * 20f,
143 Quaternion.AngleAxis(24f, Vector3.up),
150 Assert.That(AreMatricesEqual(MAT_B.Then(MAT_A.From(MAT_B)), MAT_A));
155 Assert.That(AreMatricesEqual(MAT_B.Then(MAT_B.To(MAT_A)), MAT_A));
160 Assert.That(AreMatricesEqual(MAT_A.Then(MAT_B.From(MAT_A)), MAT_B));
163 private static bool AreMatricesEqual(Matrix4x4 a, Matrix4x4 b) {
164 return AreVector3sEqual(a.GetVector3(), b.GetVector3())
165 && AreQuaternionsEqual(a.GetQuaternion(), b.GetQuaternion());
Tests for From(), To(), and Then() extension methods.
void FromMatrixBToMatrixA()
void ToMatrixAFromMatrixB()
void FromMatrixAToMatrixB()
A position and rotation. You can multiply two poses; this acts like Matrix4x4 multiplication,...