This is an automated email from the ASF dual-hosted git repository. jiayu pushed a commit to branch fix/issue-2678-affine-visuals in repository https://gitbox.apache.org/repos/asf/sedona.git
commit 50254a7fb41507fde353081cab5020de41389db0 Author: Jia Yu <[email protected]> AuthorDate: Wed Mar 4 18:09:09 2026 -0800 [GH-2678] Add SVG visuals for affine transformation functions (Phase 8) Add overlay-style SVG illustrations for all 7 affine transformation functions showing input geometry (blue dashed) and transformed result (green solid) in the same coordinate space: - ST_Affine: horizontal shear transform - ST_Rotate: 45 degree counter-clockwise rotation around centroid - ST_RotateX: 3D rotation around X-axis (Y compression in 2D projection) - ST_RotateY: 3D rotation around Y-axis (X compression in 2D projection) - ST_Scale: non-uniform scaling (1.5x, 2y) from origin - ST_ScaleGeom: scaling relative to centroid (0.5x, 0.75y) - ST_Translate: translation by (deltaX=2, deltaY=1.5) Image references inserted into all 3 doc variants (SQL, Flink, Snowflake). Closes #2678 (partial) --- docs/api/flink/Affine-Transformations/ST_Affine.md | 2 ++ docs/api/flink/Affine-Transformations/ST_Rotate.md | 2 ++ .../api/flink/Affine-Transformations/ST_RotateX.md | 2 ++ .../api/flink/Affine-Transformations/ST_RotateY.md | 2 ++ docs/api/flink/Affine-Transformations/ST_Scale.md | 2 ++ .../flink/Affine-Transformations/ST_ScaleGeom.md | 2 ++ .../flink/Affine-Transformations/ST_Translate.md | 2 ++ .../Affine-Transformations/ST_Affine.md | 2 ++ .../Affine-Transformations/ST_Rotate.md | 2 ++ .../Affine-Transformations/ST_RotateX.md | 2 ++ .../Affine-Transformations/ST_RotateY.md | 2 ++ .../vector-data/Affine-Transformations/ST_Scale.md | 2 ++ .../Affine-Transformations/ST_ScaleGeom.md | 2 ++ .../Affine-Transformations/ST_Translate.md | 2 ++ docs/api/sql/Affine-Transformations/ST_Affine.md | 2 ++ docs/api/sql/Affine-Transformations/ST_Rotate.md | 2 ++ docs/api/sql/Affine-Transformations/ST_RotateX.md | 2 ++ docs/api/sql/Affine-Transformations/ST_RotateY.md | 2 ++ docs/api/sql/Affine-Transformations/ST_Scale.md | 2 ++ .../api/sql/Affine-Transformations/ST_ScaleGeom.md | 2 ++ .../api/sql/Affine-Transformations/ST_Translate.md | 2 ++ docs/image/ST_Affine/ST_Affine.svg | 20 ++++++++++++++++++ docs/image/ST_Rotate/ST_Rotate.svg | 24 ++++++++++++++++++++++ docs/image/ST_RotateX/ST_RotateX.svg | 20 ++++++++++++++++++ docs/image/ST_RotateY/ST_RotateY.svg | 20 ++++++++++++++++++ docs/image/ST_Scale/ST_Scale.svg | 24 ++++++++++++++++++++++ docs/image/ST_ScaleGeom/ST_ScaleGeom.svg | 22 ++++++++++++++++++++ docs/image/ST_Translate/ST_Translate.svg | 24 ++++++++++++++++++++++ 28 files changed, 196 insertions(+) diff --git a/docs/api/flink/Affine-Transformations/ST_Affine.md b/docs/api/flink/Affine-Transformations/ST_Affine.md index c8714c9f01..bea4229b04 100644 --- a/docs/api/flink/Affine-Transformations/ST_Affine.md +++ b/docs/api/flink/Affine-Transformations/ST_Affine.md @@ -37,6 +37,8 @@ Based on the invoked function, the following transformation is applied: If the given geometry is empty, the result is also empty. + + Format: `ST_Affine(geometry, a, b, c, d, e, f, g, h, i, xOff, yOff, zOff)` diff --git a/docs/api/flink/Affine-Transformations/ST_Rotate.md b/docs/api/flink/Affine-Transformations/ST_Rotate.md index 41b489d948..4e4998b9ee 100644 --- a/docs/api/flink/Affine-Transformations/ST_Rotate.md +++ b/docs/api/flink/Affine-Transformations/ST_Rotate.md @@ -21,6 +21,8 @@ Introduction: Rotates a geometry by a specified angle in radians counter-clockwise around a given origin point. The origin for rotation can be specified as either a POINT geometry or x and y coordinates. If the origin is not specified, the geometry is rotated around POINT(0 0). + + Formats; `ST_Rotate (geometry: Geometry, angle: Double)` diff --git a/docs/api/flink/Affine-Transformations/ST_RotateX.md b/docs/api/flink/Affine-Transformations/ST_RotateX.md index b239e29246..9d9e0c8f47 100644 --- a/docs/api/flink/Affine-Transformations/ST_RotateX.md +++ b/docs/api/flink/Affine-Transformations/ST_RotateX.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the X-axis by the given angle measured in radians. + + Format: `ST_RotateX(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/flink/Affine-Transformations/ST_RotateY.md b/docs/api/flink/Affine-Transformations/ST_RotateY.md index 24d6b6ba61..dc0f0f40ad 100644 --- a/docs/api/flink/Affine-Transformations/ST_RotateY.md +++ b/docs/api/flink/Affine-Transformations/ST_RotateY.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the Y-axis by the given angle measured in radians. + + Format: `ST_RotateY(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/flink/Affine-Transformations/ST_Scale.md b/docs/api/flink/Affine-Transformations/ST_Scale.md index 34940342a8..7b9be8a7aa 100644 --- a/docs/api/flink/Affine-Transformations/ST_Scale.md +++ b/docs/api/flink/Affine-Transformations/ST_Scale.md @@ -24,6 +24,8 @@ Introduction: This function scales the geometry to a new size by multiplying the !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_Scale(geometry: Geometry, scaleX: Double, scaleY: Double)` Return type: `Geometry` diff --git a/docs/api/flink/Affine-Transformations/ST_ScaleGeom.md b/docs/api/flink/Affine-Transformations/ST_ScaleGeom.md index 7a2408bb3b..5a7db86270 100644 --- a/docs/api/flink/Affine-Transformations/ST_ScaleGeom.md +++ b/docs/api/flink/Affine-Transformations/ST_ScaleGeom.md @@ -26,6 +26,8 @@ To scale the geometry relative to a point other than the true origin (e.g., scal !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_ScaleGeom(geometry: Geometry, factor: Geometry, origin: Geometry)` diff --git a/docs/api/flink/Affine-Transformations/ST_Translate.md b/docs/api/flink/Affine-Transformations/ST_Translate.md index 8ee50846c3..185cebe69d 100644 --- a/docs/api/flink/Affine-Transformations/ST_Translate.md +++ b/docs/api/flink/Affine-Transformations/ST_Translate.md @@ -27,6 +27,8 @@ If the geometry is empty, no change is done to it. If the given geometry contains sub-geometries (GEOMETRY COLLECTION, MULTI POLYGON/LINE/POINT), all underlying geometries are individually translated. + + Format: `ST_Translate(geometry: Geometry, deltaX: Double, deltaY: Double, deltaZ: Double)` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Affine.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Affine.md index 6053df6778..f705c5650d 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Affine.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Affine.md @@ -37,6 +37,8 @@ Based on the invoked function, the following transformation is applied: If the given geometry is empty, the result is also empty. + + Format: `ST_Affine(geometry, a, b, c, d, e, f, g, h, i, xOff, yOff, zOff)` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Rotate.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Rotate.md index 3aaa6ed918..969398c7d5 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Rotate.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Rotate.md @@ -21,6 +21,8 @@ Introduction: Rotates a geometry by a specified angle in radians counter-clockwise around a given origin point. The origin for rotation can be specified as either a POINT geometry or x and y coordinates. If the origin is not specified, the geometry is rotated around POINT(0 0). + + Formats; `ST_Rotate (geometry: Geometry, angle: Double)` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateX.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateX.md index db2e52e30a..f9297fac85 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateX.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateX.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the X-axis by the given angle measured in radians. + + Format: `ST_RotateX(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateY.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateY.md index 311dc12b32..ca1f4d9b52 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateY.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_RotateY.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the Y-axis by the given angle measured in radians. + + Format: `ST_RotateY(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Scale.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Scale.md index b416efd63f..ce1b43c976 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Scale.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Scale.md @@ -24,6 +24,8 @@ Introduction: This function scales the geometry to a new size by multiplying the !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_Scale(geometry: Geometry, scaleX: Double, scaleY: Double)` Return type: `Geometry` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_ScaleGeom.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_ScaleGeom.md index f45e0ddd80..750013cb6f 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_ScaleGeom.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_ScaleGeom.md @@ -26,6 +26,8 @@ To scale the geometry relative to a point other than the true origin (e.g., scal !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_ScaleGeom(geometry: Geometry, factor: Geometry, origin: Geometry)` diff --git a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Translate.md b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Translate.md index c05cb646b7..e145103f1e 100644 --- a/docs/api/snowflake/vector-data/Affine-Transformations/ST_Translate.md +++ b/docs/api/snowflake/vector-data/Affine-Transformations/ST_Translate.md @@ -26,6 +26,8 @@ If the geometry is 2D, and a deltaZ parameter is specified, no change is done to If the geometry is empty, no change is done to it. If the given geometry contains sub-geometries (GEOMETRY COLLECTION, MULTI POLYGON/LINE/POINT), all underlying geometries are individually translated. + + Format: `ST_Translate(geometry: geometry, deltaX: deltaX, deltaY: deltaY, deltaZ: deltaZ)` Return type: `Geometry` diff --git a/docs/api/sql/Affine-Transformations/ST_Affine.md b/docs/api/sql/Affine-Transformations/ST_Affine.md index cf4e74f365..70afa17b42 100644 --- a/docs/api/sql/Affine-Transformations/ST_Affine.md +++ b/docs/api/sql/Affine-Transformations/ST_Affine.md @@ -37,6 +37,8 @@ Based on the invoked function, the following transformation is applied: If the given geometry is empty, the result is also empty. + + Format: `ST_Affine(geometry, a, b, c, d, e, f, g, h, i, xOff, yOff, zOff)` diff --git a/docs/api/sql/Affine-Transformations/ST_Rotate.md b/docs/api/sql/Affine-Transformations/ST_Rotate.md index 41b489d948..4e4998b9ee 100644 --- a/docs/api/sql/Affine-Transformations/ST_Rotate.md +++ b/docs/api/sql/Affine-Transformations/ST_Rotate.md @@ -21,6 +21,8 @@ Introduction: Rotates a geometry by a specified angle in radians counter-clockwise around a given origin point. The origin for rotation can be specified as either a POINT geometry or x and y coordinates. If the origin is not specified, the geometry is rotated around POINT(0 0). + + Formats; `ST_Rotate (geometry: Geometry, angle: Double)` diff --git a/docs/api/sql/Affine-Transformations/ST_RotateX.md b/docs/api/sql/Affine-Transformations/ST_RotateX.md index b239e29246..9d9e0c8f47 100644 --- a/docs/api/sql/Affine-Transformations/ST_RotateX.md +++ b/docs/api/sql/Affine-Transformations/ST_RotateX.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the X-axis by the given angle measured in radians. + + Format: `ST_RotateX(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/sql/Affine-Transformations/ST_RotateY.md b/docs/api/sql/Affine-Transformations/ST_RotateY.md index 24d6b6ba61..dc0f0f40ad 100644 --- a/docs/api/sql/Affine-Transformations/ST_RotateY.md +++ b/docs/api/sql/Affine-Transformations/ST_RotateY.md @@ -21,6 +21,8 @@ Introduction: Performs a counter-clockwise rotation of the specified geometry around the Y-axis by the given angle measured in radians. + + Format: `ST_RotateY(geometry: Geometry, angle: Double)` Return type: `Geometry` diff --git a/docs/api/sql/Affine-Transformations/ST_Scale.md b/docs/api/sql/Affine-Transformations/ST_Scale.md index 34940342a8..7b9be8a7aa 100644 --- a/docs/api/sql/Affine-Transformations/ST_Scale.md +++ b/docs/api/sql/Affine-Transformations/ST_Scale.md @@ -24,6 +24,8 @@ Introduction: This function scales the geometry to a new size by multiplying the !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_Scale(geometry: Geometry, scaleX: Double, scaleY: Double)` Return type: `Geometry` diff --git a/docs/api/sql/Affine-Transformations/ST_ScaleGeom.md b/docs/api/sql/Affine-Transformations/ST_ScaleGeom.md index 7a2408bb3b..5a7db86270 100644 --- a/docs/api/sql/Affine-Transformations/ST_ScaleGeom.md +++ b/docs/api/sql/Affine-Transformations/ST_ScaleGeom.md @@ -26,6 +26,8 @@ To scale the geometry relative to a point other than the true origin (e.g., scal !!!Note This function is designed for scaling 2D geometries. While it currently doesn't support scaling the Z and M coordinates, it preserves these values during the scaling operation. + + Format: `ST_ScaleGeom(geometry: Geometry, factor: Geometry, origin: Geometry)` diff --git a/docs/api/sql/Affine-Transformations/ST_Translate.md b/docs/api/sql/Affine-Transformations/ST_Translate.md index 5904ea931e..a03f088031 100644 --- a/docs/api/sql/Affine-Transformations/ST_Translate.md +++ b/docs/api/sql/Affine-Transformations/ST_Translate.md @@ -26,6 +26,8 @@ If the geometry is 2D, and a deltaZ parameter is specified, no change is done to If the geometry is empty, no change is done to it. If the given geometry contains sub-geometries (GEOMETRY COLLECTION, MULTI POLYGON/LINE/POINT), all underlying geometries are individually translated. + + Format: `ST_Translate(geometry: Geometry, deltaX: Double, deltaY: Double, deltaZ: Double)` diff --git a/docs/image/ST_Affine/ST_Affine.svg b/docs/image/ST_Affine/ST_Affine.svg new file mode 100644 index 0000000000..72d86c364a --- /dev/null +++ b/docs/image/ST_Affine/ST_Affine.svg @@ -0,0 +1,20 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_Affine</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">horizontal shear (b=0.4)</text> + <polygon points="113.1,149.2 246.8,149.2 246.8,48.8 113.1,48.8 113.1,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="113.1" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="246.8" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="246.8" cy="48.8" r="2.5" fill="#1565C0"/> + <circle cx="113.1" cy="48.8" r="2.5" fill="#1565C0"/> + <polygon points="113.1,149.2 246.8,149.2 286.9,48.8 153.2,48.8 113.1,149.2" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="113.1" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="246.8" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="286.9" cy="48.8" r="2.5" fill="#43A047"/> + <circle cx="153.2" cy="48.8" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_Rotate/ST_Rotate.svg b/docs/image/ST_Rotate/ST_Rotate.svg new file mode 100644 index 0000000000..31b26124df --- /dev/null +++ b/docs/image/ST_Rotate/ST_Rotate.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_Rotate</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">angle=45° counter-clockwise</text> + <polygon points="162.4,133.6 247.1,133.6 247.1,105.3 190.6,105.3 190.6,48.8 162.4,48.8 162.4,133.6" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="162.4" cy="133.6" r="2.5" fill="#1565C0"/> + <circle cx="247.1" cy="133.6" r="2.5" fill="#1565C0"/> + <circle cx="247.1" cy="105.3" r="2.5" fill="#1565C0"/> + <circle cx="190.6" cy="105.3" r="2.5" fill="#1565C0"/> + <circle cx="190.6" cy="48.8" r="2.5" fill="#1565C0"/> + <circle cx="162.4" cy="48.8" r="2.5" fill="#1565C0"/> + <polygon points="200.0,149.2 259.9,89.3 239.9,69.3 200.0,109.2 160.1,69.3 140.1,89.3 200.0,149.2" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="200.0" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="259.9" cy="89.3" r="2.5" fill="#43A047"/> + <circle cx="239.9" cy="69.3" r="2.5" fill="#43A047"/> + <circle cx="200.0" cy="109.2" r="2.5" fill="#43A047"/> + <circle cx="160.1" cy="69.3" r="2.5" fill="#43A047"/> + <circle cx="140.1" cy="89.3" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_RotateX/ST_RotateX.svg b/docs/image/ST_RotateX/ST_RotateX.svg new file mode 100644 index 0000000000..27a2feb64f --- /dev/null +++ b/docs/image/ST_RotateX/ST_RotateX.svg @@ -0,0 +1,20 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_RotateX</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">angle=45° around X-axis (Y compresses)</text> + <polygon points="133.1,149.2 266.9,149.2 266.9,48.8 133.1,48.8 133.1,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="133.1" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="266.9" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="266.9" cy="48.8" r="2.5" fill="#1565C0"/> + <circle cx="133.1" cy="48.8" r="2.5" fill="#1565C0"/> + <polygon points="133.1,149.2 266.9,149.2 266.9,78.2 133.1,78.2 133.1,149.2" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="133.1" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="266.9" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="266.9" cy="78.2" r="2.5" fill="#43A047"/> + <circle cx="133.1" cy="78.2" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_RotateY/ST_RotateY.svg b/docs/image/ST_RotateY/ST_RotateY.svg new file mode 100644 index 0000000000..7a54bb8ad1 --- /dev/null +++ b/docs/image/ST_RotateY/ST_RotateY.svg @@ -0,0 +1,20 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_RotateY</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">angle=45° around Y-axis (X compresses)</text> + <polygon points="133.1,149.2 266.9,149.2 266.9,48.8 133.1,48.8 133.1,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="133.1" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="266.9" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="266.9" cy="48.8" r="2.5" fill="#1565C0"/> + <circle cx="133.1" cy="48.8" r="2.5" fill="#1565C0"/> + <polygon points="133.1,149.2 227.7,149.2 227.7,48.8 133.1,48.8 133.1,149.2" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="133.1" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="227.7" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="227.7" cy="48.8" r="2.5" fill="#43A047"/> + <circle cx="133.1" cy="48.8" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_Scale/ST_Scale.svg b/docs/image/ST_Scale/ST_Scale.svg new file mode 100644 index 0000000000..90b4e5c738 --- /dev/null +++ b/docs/image/ST_Scale/ST_Scale.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_Scale</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">scaleX=1.5, scaleY=2</text> + <polygon points="162.4,149.2 212.5,149.2 212.5,132.4 179.1,132.4 179.1,99.0 162.4,99.0 162.4,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="162.4" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="212.5" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="212.5" cy="132.4" r="2.5" fill="#1565C0"/> + <circle cx="179.1" cy="132.4" r="2.5" fill="#1565C0"/> + <circle cx="179.1" cy="99.0" r="2.5" fill="#1565C0"/> + <circle cx="162.4" cy="99.0" r="2.5" fill="#1565C0"/> + <polygon points="162.4,149.2 237.6,149.2 237.6,115.7 187.5,115.7 187.5,48.8 162.4,48.8 162.4,149.2" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="162.4" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="237.6" cy="149.2" r="2.5" fill="#43A047"/> + <circle cx="237.6" cy="115.7" r="2.5" fill="#43A047"/> + <circle cx="187.5" cy="115.7" r="2.5" fill="#43A047"/> + <circle cx="187.5" cy="48.8" r="2.5" fill="#43A047"/> + <circle cx="162.4" cy="48.8" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_ScaleGeom/ST_ScaleGeom.svg b/docs/image/ST_ScaleGeom/ST_ScaleGeom.svg new file mode 100644 index 0000000000..d550f7dad7 --- /dev/null +++ b/docs/image/ST_ScaleGeom/ST_ScaleGeom.svg @@ -0,0 +1,22 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_ScaleGeom</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">factor=(0.5, 0.75) relative to centroid</text> + <polygon points="159.9,149.2 240.1,149.2 240.1,89.0 200.0,48.8 159.9,89.0 159.9,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="159.9" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="240.1" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="240.1" cy="89.0" r="2.5" fill="#1565C0"/> + <circle cx="200.0" cy="48.8" r="2.5" fill="#1565C0"/> + <circle cx="159.9" cy="89.0" r="2.5" fill="#1565C0"/> + <polygon points="179.9,138.1 220.1,138.1 220.1,93.0 200.0,62.9 179.9,93.0 179.9,138.1" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="179.9" cy="138.1" r="2.5" fill="#43A047"/> + <circle cx="220.1" cy="138.1" r="2.5" fill="#43A047"/> + <circle cx="220.1" cy="93.0" r="2.5" fill="#43A047"/> + <circle cx="200.0" cy="62.9" r="2.5" fill="#43A047"/> + <circle cx="179.9" cy="93.0" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file diff --git a/docs/image/ST_Translate/ST_Translate.svg b/docs/image/ST_Translate/ST_Translate.svg new file mode 100644 index 0000000000..d1c1454e59 --- /dev/null +++ b/docs/image/ST_Translate/ST_Translate.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="180" viewBox="0 0 400 180"> + <rect width="400" height="180" fill="#f5f5f5" rx="5"/> + <text x="200" y="18" font-family="monospace" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">ST_Translate</text> + <text x="200" y="32" font-family="monospace" font-size="9" fill="#888" text-anchor="middle">deltaX=2, deltaY=1.5</text> + <polygon points="144.3,149.2 211.1,149.2 211.1,126.9 166.6,126.9 166.6,82.3 144.3,82.3 144.3,149.2" stroke="#1565C0" stroke-width="2" fill="rgba(21,101,192,0.12)" stroke-dasharray="6,3"/> + <circle cx="144.3" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="211.1" cy="149.2" r="2.5" fill="#1565C0"/> + <circle cx="211.1" cy="126.9" r="2.5" fill="#1565C0"/> + <circle cx="166.6" cy="126.9" r="2.5" fill="#1565C0"/> + <circle cx="166.6" cy="82.3" r="2.5" fill="#1565C0"/> + <circle cx="144.3" cy="82.3" r="2.5" fill="#1565C0"/> + <polygon points="188.9,115.7 255.7,115.7 255.7,93.4 211.1,93.4 211.1,48.9 188.9,48.9 188.9,115.7" stroke="#43A047" stroke-width="2" fill="rgba(67,160,71,0.18)"/> + <circle cx="188.9" cy="115.7" r="2.5" fill="#43A047"/> + <circle cx="255.7" cy="115.7" r="2.5" fill="#43A047"/> + <circle cx="255.7" cy="93.4" r="2.5" fill="#43A047"/> + <circle cx="211.1" cy="93.4" r="2.5" fill="#43A047"/> + <circle cx="211.1" cy="48.9" r="2.5" fill="#43A047"/> + <circle cx="188.9" cy="48.9" r="2.5" fill="#43A047"/> + + <rect x="100" y="162" width="8" height="8" fill="rgba(21,101,192,0.12)" stroke="#1565C0" stroke-width="1" stroke-dasharray="2,1"/> + <text x="112" y="170" font-family="monospace" font-size="9" fill="#1565C0">Input</text> + <rect x="220" y="162" width="8" height="8" fill="rgba(67,160,71,0.18)" stroke="#43A047" stroke-width="1"/> + <text x="232" y="170" font-family="monospace" font-size="9" fill="#43A047">Result</text> +</svg> \ No newline at end of file
