As in a plane, translations and rotations are needed to do
object or coordinate transformations. With
pgSphere, it is done using Euler
transformations (strans
). On a sphere, there
aren't real translations. All movements on a sphere are
rotations around axes.
The general syntax for a transformation is always:
object operator euler
where operators are +
for a usual
transformation, -
for an inverse
transformation. You can transform any object having a
pgSphere data type, except the
data type sbox
.
Example 5.16. Transformation of a point
Rotate a spherical point counterclockwise, first 90° around
the x
-axis, second 90° around
the z
-axis, and last 40.5° around
the x
-axis.
sql> SELECT set_sphere_output('DEG'); set_sphere_output ------------------- SET DEG (1 row) sql> SELECT spoint '(30d,0d)' + strans '90d, 90d, 40.5d, XZX AS spoint'; spoint --------------- (90d , 70.5d) (1 row)
You can use the +
and
-
operator as unary operators for
transformations, too. +
just returns the transformation itself,
strans
-
returns the inverse
transformation.
strans
Example 5.17. An inverse transformation
sql> SELECT set_sphere_output('DEG'); set_sphere_output ------------------- SET DEG (1 row) sql> SELECT - strans '20d, 50d, 80d, XYZ' AS inverted; inverted ----------------------- 280d, 310d, 340d, ZYX (1 row)