{
"_note": "compose spec [i, j] means: apply cases[i] first, then cases[j]. Vectors ignore the translational part of a transform.",
"cases": [
{
"kind": "translation",
"spec": {
"offset": [
1.5,
-2.0,
0.25
]
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
2.5,
0.0,
3.25
],
[
1.0,
-1.75,
2.0
],
[
3.8,
-3.1,
0.95
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
]
},
{
"kind": "rotation",
"spec": {
"axis_origin": [
1.0,
0.0,
0.0
],
"axis_dir": [
0.0,
0.0,
1.0
],
"angle": 0.7
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
-0.28843537447538203,
1.5296843745689772,
3.0
],
[
-0.30831770273615555,
-0.7751159840354144,
1.75
],
[
2.7029342994312953,
-0.003843412603939167,
0.7
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
0.7648421872844885,
0.644217687237691,
0.0
],
[
1.187693202689358,
-0.6339438904867651,
2.0
],
[
-0.48713973108042297,
0.1126715687424881,
1.2
]
]
},
{
"kind": "rotation",
"spec": {
"axis_origin": [
1.0,
2.0,
3.0
],
"axis_dir": [
0.5773502691896258,
0.5773502691896258,
0.5773502691896258
],
"angle": 2.1
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.0,
2.0,
3.0
],
[
-0.25081291989913335,
0.5016179860995309,
1.2491949337996018
],
[
-1.3142236174382347,
3.3025468913659948,
-0.08832327392776129
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
-0.003230736399905343,
0.9999895284016864,
0.0032412079982189756
],
[
1.9943121786056464,
0.5105156006971628,
-1.254827779302809
],
[
1.2022531382012827,
-0.2973997034826053,
0.39514656528132247
]
]
},
{
"kind": "scale",
"spec": {
"center": [
1.0,
1.0,
1.0
],
"factor": 2.5
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.0,
3.5,
6.0
],
[
-2.75,
-0.875,
2.875
],
[
4.25,
-4.25,
0.25
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
2.5,
0.0,
0.0
],
[
1.25,
-3.125,
5.0
],
[
-0.75,
1.0,
3.0
]
]
},
{
"kind": "mirror_point",
"spec": {
"point": [
1.0,
2.0,
3.0
]
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.0,
2.0,
3.0
],
[
2.5,
3.75,
4.25
],
[
-0.2999999999999998,
5.1,
5.3
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
-1.0,
-0.0,
-0.0
],
[
-0.5,
1.25,
-2.0
],
[
0.3,
-0.4,
-1.2
]
]
},
{
"kind": "mirror_axis",
"spec": {
"origin": [
0.0,
1.0,
0.0
],
"dir": [
1.0,
0.0,
0.0
]
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.0,
0.0,
-3.0
],
[
-0.5,
1.75,
-1.75
],
[
2.3,
3.1,
-0.7
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
1.25,
-2.0
],
[
-0.3,
-0.4,
-1.2
]
]
},
{
"kind": "mirror_plane",
"spec": {
"frame": {
"origin": [
0.0,
0.0,
2.0
],
"x_dir": [
1.0,
0.0,
-0.0
],
"y_dir": [
-0.0,
1.0,
0.0
],
"z_dir": [
0.0,
0.0,
1.0
]
}
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.0,
2.0,
1.0
],
[
-0.5,
0.25,
2.25
],
[
2.3,
-1.1,
3.3
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
1.0,
0.0,
-0.0
],
[
0.5,
-1.25,
-2.0
],
[
-0.3,
0.4,
-1.2
]
]
},
{
"kind": "compose",
"spec": {
"compose": [
1,
0
]
},
"apply_to_points": [
[
1.0,
2.0,
3.0
],
[
-0.5,
0.25,
1.75
],
[
2.3,
-1.1,
0.7
]
],
"expected_points": [
[
1.211564625524618,
-0.4703156254310228,
3.25
],
[
1.1916822972638443,
-2.7751159840354145,
2.0
],
[
4.202934299431295,
-2.0038434126039393,
0.95
]
],
"apply_to_vectors": [
[
1.0,
0.0,
0.0
],
[
0.5,
-1.25,
2.0
],
[
-0.3,
0.4,
1.2
]
],
"expected_vectors": [
[
0.7648421872844885,
0.644217687237691,
0.0
],
[
1.187693202689358,
-0.6339438904867651,
2.0
],
[
-0.48713973108042297,
0.1126715687424881,
1.2
]
]
}
]
}