Transforma a otro subtipo
tposeInst(tpose) → tposeInst tposeSeq(tpose) → tposeSeq tposeSeqSet(tpose) → tposeSeqSet
SELECT asText(tposeSeq(tpose 'Pose(Point(1 1), 0.5)@2001-01-01', 'discrete'));
-- {Pose(POINT(1 1),0.5)@2001-01-01}
SELECT asText(tposeSeq(tpose 'Pose(Point(1 1), 0.5)@2001-01-01'));
-- [Pose(POINT(1 1),0.5)@2001-01-01]
SELECT asText(tposeSeqSet(tpose 'Pose(PointZ(1 1 1), 0.5, 0.5, 0.5, 0.5)@2001-01-01'));
-- {[Pose(POINT Z (1 1 1),0.5,0.5,0.5,0.5)@2001-01-01]}
Transforma a otra interpolación
setInterp(tpose,interp text) → tpose
SELECT asText(setInterp(tpose 'Pose(Point(1 1),0.2)@2001-01-01','linear'));
-- [Pose(POINT(1 1),0.2)@2001-01-01]
SELECT asText(setInterp(tpose '{[Pose(Point Z(1 1 1),1,0,0,0)@2001-01-01],
[Pose(Point Z(2 2 2),0,0,0,1)@2001-01-02]}', 'discrete'));
-- {Pose(POINT Z (1 1 1),1,0,0,0)@2001-01-01, Pose(POINT Z (2 2 2),0,0,0,1)@2001-01-02}
Redondea los puntos y las orientaciones de la pose temporal al número de posiciones decimales
round({tpose,tposechain},integer=0) → {tpose,tposechain}
shiftTime({tpose,tposechain},interval) → {tpose,tposechain}
SELECT asText(round(tpose '{[Pose(Point(1 1.123456789),0.123456789)@2001-01-01,
Pose(Point(1 1),0.5)@2001-01-02)}', 3));
-- {[Pose(POINT(1 1.123),0.123)@2001-01-01, Pose(POINT(1 1),0.5)@2001-01-02)}
SELECT asEWKT(round(tposechain
'PoseChain(Pose(Point(1.123456789 2.123456789), 0.5))@2001-01-01', 3));
-- PoseChain(Pose(POINT(1.123 2.123),0.5))@2001-01-01
SELECT asEWKT(shiftTime(tposechain 'PoseChain(Pose(Point(1 1), 0.5))@2001-01-01',
interval '1 day'));
-- PoseChain(Pose(POINT(1 1),0.5))@2001-01-02
Devuelve un valor temporal trasladado por los desplazamientos dados
translate({tpose,tposechain},deltax float,deltay float,deltaz float=0)
→ {tpose,tposechain}
Un desplazamiento vertical saca un valor bidimensional de su plano, por lo que el resultado es tridimensional.
La cadena de cada instante mueve su primer eslabón, que se expresa en el marco exterior de la cadena, y conserva los demás.
El movimiento es una aplicación plana, por lo que un valor geodésico genera un error.
SELECT asText(translate(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 1, 2), 6); -- [Pose(POINT(2 3),0.3)@2001-01-01, Pose(POINT(4 4),1.1)@2001-01-02] SELECT asText(translate(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 1, 2, 3), 6); /* [Pose(POINT Z (2 3 3),0.988771,0,0,0.149438)@2001-01-01, Pose(POINT Z (4 4 3),0.852525,0,0,0.522687)@2001-01-02] */
Devuelve un valor temporal rotado en sentido antihorario alrededor del origen o de un punto
rotate({tpose,tposechain},angle float) → {tpose,tposechain}
rotate({tpose,tposechain},angle float,x0 float,y0 float) → {tpose,tposechain}
La cadena de cada instante mueve su primer eslabón, que se expresa en el marco exterior de la cadena, y conserva los demás.
El movimiento es una aplicación plana, por lo que un valor geodésico genera un error.
SELECT asText(rotate(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 0.7, 1, 1), 6); -- [Pose(POINT(1 1),1)@2001-01-01, Pose(POINT(1.885467 3.053278),1.8)@2001-01-02] SELECT asText(rotate(tposechain '[PoseChain(Pose(Point(1 1),0.3),Pose(Point(2 0),0.5))@2001-01-01, PoseChain(Pose(Point(3 2),1.1),Pose(Point(2 0),0.5))@2001-01-02]', 0.7, 1, 1), 6); /* [PoseChain(Pose(POINT(1 1),1),Pose(POINT(2 0),0.5))@2001-01-01, PoseChain(Pose(POINT(1.885467 3.053278),1.8),Pose(POINT(2 0),0.5))@2001-01-02] */
Devuelve un valor temporal rotado en sentido antihorario alrededor del eje x
rotateX({tpose,tposechain},angle float) → {tpose,tposechain}
La rotación saca un valor bidimensional de su plano, por lo que el resultado es tridimensional: cada posición gana la altura que le da la rotación y cada orientación es la rotación compuesta con el ángulo alrededor de la vertical que indica el valor.
La cadena de cada instante mueve su primer eslabón, que se expresa en el marco exterior de la cadena, y conserva los demás.
El movimiento es una aplicación plana, por lo que un valor geodésico genera un error.
SELECT asText(rotateX(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 0.7), 6); /* [Pose(POINT Z (1 0.764842 0.644218),0.928825,0.339047,-0.051242,0.140378)@2001-01-01, Pose(POINT Z (3 1.529684 1.288435),0.800838,0.292329,-0.179228,0.490998)@2001-01-02] */
Devuelve un valor temporal rotado en sentido antihorario alrededor del eje y
rotateY({tpose,tposechain},angle float) → {tpose,tposechain}
La rotación saca un valor bidimensional de su plano, por lo que el resultado es tridimensional: cada posición gana la altura que le da la rotación y cada orientación es la rotación compuesta con el ángulo alrededor de la vertical que indica el valor.
La cadena de cada instante mueve su primer eslabón, que se expresa en el marco exterior de la cadena, y conserva los demás.
El movimiento es una aplicación plana, por lo que un valor geodésico genera un error.
SELECT asText(rotateY(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 0.7), 6); /* [Pose(POINT Z (0.764842 1 -0.644218),0.928825,0.051242,0.339047,0.140378)@2001-01-01, Pose(POINT Z (2.294527 2 -1.932653),0.800838,0.179228,0.292329,0.490998)@2001-01-02] */
Devuelve un valor temporal rotado en sentido antihorario alrededor del eje z
rotateZ({tpose,tposechain},angle float) → {tpose,tposechain}
La cadena de cada instante mueve su primer eslabón, que se expresa en el marco exterior de la cadena, y conserva los demás.
El movimiento es una aplicación plana, por lo que un valor geodésico genera un error.
SELECT asText(rotateZ(tpose '[Pose(Point(1 1),0.3)@2001-01-01, Pose(Point(3 2),1.1)@2001-01-02]', 0.7), 6); /* [Pose(POINT(0.120625 1.40906),1)@2001-01-01, Pose(POINT(1.006091 3.462337),1.8)@2001-01-02] */