Skip to contents

Rotate a shape by a specified angle around a given center point.

Usage

coo_rotate_around(x, ..., .cols = NULL, .ldk_col = NULL)

Arguments

x

A matrix (nx2), list of matrices, or tibble with coo columns.

...

Additional arguments (reserved for future use).

.cols

Column name(s) to process when x is a tibble. If NULL, automatically detects columns containing coo objects.

theta

Numeric. Rotation angle in radians. Default is 0.

center

Numeric vector of length 2 (x, y). Center point for rotation. Default is the centroid.

Value

  • If x is a single matrix: returns the rotated matrix

  • If x is a list: returns a list of rotated matrices

  • If x is a tibble: returns the tibble with specified coo columns rotated

See also

coo_rotate() for rotation around origin

Examples

# Rotate around centroid
coo_rotate_around(shapes$cat, theta = pi/4)
#> <xy [120 x 2]>
#>       [,1]    [,2]   
#>  [1,] 219.291  79.828
#>  [2,] 220.705  72.757
#>  [3,] 223.533  75.585
#>  [4,] 229.190  78.414
#>  [5,] 235.554  76.293
#>  [6,] ...     ...    
#>  [7,] 244.747  81.242
#>  [8,] 239.090  78.414
#>  [9,] 231.312  79.121
#> [10,] 224.240  80.535
#> [11,] 218.584  83.364

# Rotate around custom point
coo_rotate_around(bot$coo, theta = pi/6, center = c(100, 100))
#> $brahma
#> <xy [138 x 2]>
#>       [,1]     [,2]    
#>  [1,] -185.060  467.738
#>  [2,] -171.962  451.051
#>  [3,] -166.462  441.525
#>  [4,] -153.363  424.838
#>  [5,] -140.265  408.152
#>  [6,] ...      ...     
#>  [7,] -235.158  548.510
#>  [8,] -230.524  538.484
#>  [9,] -220.024  520.297
#> [10,] -208.658  502.611
#> [11,] -202.792  494.451
#> 
#> $caney
#> <xy [168 x 2]>
#>       [,1]     [,2]    
#>  [1,] -158.203  453.221
#>  [2,] -153.203  444.561
#>  [3,] -142.337  427.740
#>  [4,] -138.203  418.580
#>  [5,] -132.337  410.420
#>  [6,] ...      ...     
#>  [7,] -178.785  534.869
#>  [8,] -176.579  513.049
#>  [9,] -175.409  501.022
#> [10,] -173.007  490.862
#> [11,] -166.471  471.542
#> 
#> $chimay
#> <xy [189 x 2]>
#>       [,1]    [,2]   
#>  [1,] -60.667 276.284
#>  [2,] -56.667 269.356
#>  [3,] -53.167 263.294
#>  [4,] -48.301 256.865
#>  [5,] -44.301 249.937
#>  [6,] ...     ...    
#>  [7,] -75.007 321.121
#>  [8,] -75.337 311.693
#>  [9,] -74.435 304.131
#> [10,] -72.167 296.203
#> [11,] -69.033 288.774
#> 
#> $corona
#> <xy [129 x 2]>
#>       [,1]    [,2]   
#>  [1,] -70.794 377.824
#>  [2,] -65.794 369.164
#>  [3,] -56.160 350.477
#>  [4,] -50.294 342.317
#>  [5,] -44.794 332.791
#>  [6,] ...     ...    
#>  [7,] -87.412 460.606
#>  [8,] -84.340 439.286
#>  [9,] -84.170 428.992
#> [10,] -82.134 417.465
#> [11,] -78.696 397.511
#> 
#> $deusventrue
#> <xy [152 x 2]>
#>       [,1]     [,2]    
#>  [1,] -113.017  416.956
#>  [2,] -111.981  407.161
#>  [3,] -109.909  387.573
#>  [4,] -108.007  378.279
#>  [5,] -104.069  357.458
#>  [6,] ...      ...     
#>  [7,] -127.500  494.042
#>  [8,] -125.098  483.881
#>  [9,] -122.160  464.793
#> [10,] -120.258  455.499
#> [11,] -115.588  437.410
#> 
#> $duvel
#> <xy [161 x 2]>
#>       [,1]    [,2]   
#>  [1,] -41.275 266.695
#>  [2,] -35.775 257.169
#>  [3,] -30.275 247.643
#>  [4,] -30.275 247.643
#>  [5,] -24.775 238.117
#>  [6,] ...     ...    
#>  [7,] -57.017 319.961
#>  [8,] -55.847 307.935
#>  [9,] -54.311 297.274
#> [10,] -54.311 297.274
#> [11,] -50.543 286.748
#> 
#> $franziskaner
#> <xy [124 x 2]>
#>       [,1]     [,2]    
#>  [1,] -109.337  370.583
#>  [2,]  -98.837  352.396
#>  [3,]  -93.837  343.736
#>  [4,]  -84.337  327.281
#>  [5,]  -79.337  318.621
#>  [6,] ...      ...     
#>  [7,] -150.641  454.123
#>  [8,] -141.007  435.436
#>  [9,] -137.739  425.776
#> [10,] -129.837  406.090
#> [11,] -124.837  397.429
#> 
#> $grimbergen
#> <xy [126 x 2]>
#>       [,1]     [,2]    
#>  [1,] -102.229  334.272
#>  [2,]  -98.962  324.611
#>  [3,]  -88.462  306.425
#>  [4,]  -82.962  296.899
#>  [5,]  -77.962  288.238
#>  [6,] ...      ...     
#>  [7,] -116.017  422.152
#>  [8,] -118.141  397.831
#>  [9,] -117.837  385.305
#> [10,] -116.301  374.645
#> [11,] -110.997  353.458
#> 
#> $guiness
#> <xy [183 x 2]>
#>       [,1]    [,2]   
#>  [1,] -69.347 331.317
#>  [2,] -65.347 324.389
#>  [3,] -61.347 317.461
#>  [4,] -56.847 309.667
#>  [5,] -48.847 295.810
#>  [6,] ...     ...    
#>  [7,] -94.383 382.681
#>  [8,] -91.615 373.886
#>  [9,] -87.579 358.896
#> [10,] -82.713 352.468
#> [11,] -77.347 345.174
#> 
#> $hoegardeen
#> <xy [193 x 2]>
#>       [,1]     [,2]    
#>  [1,] -172.229  455.515
#>  [2,] -167.462  443.257
#>  [3,] -161.462  432.865
#>  [4,] -154.962  421.606
#>  [5,] -148.462  410.348
#>  [6,] ...      ...     
#>  [7,] -195.873  528.467
#>  [8,] -192.837  515.209
#>  [9,] -189.435  503.317
#> [10,] -186.399  490.058
#> [11,] -180.765  478.300
#> 
#> $jupiler
#> <xy [156 x 2]>
#>       [,1]     [,2]    
#>  [1,] -146.471  436.901
#>  [2,] -140.337  424.276
#>  [3,] -133.837  413.018
#>  [4,] -126.837  400.894
#>  [5,] -119.837  388.769
#>  [6,] ...      ...     
#>  [7,] -171.017  517.415
#>  [8,] -168.347  502.790
#>  [9,] -164.445  490.032
#> [10,] -160.909  475.908
#> [11,] -156.507  462.283
#> 
#> $kingfisher
#> <xy [182 x 2]>
#>       [,1]    [,2]   
#>  [1,] -67.115 331.451
#>  [2,] -62.115 322.791
#>  [3,] -57.615 314.997
#>  [4,] -52.615 306.336
#>  [5,] -47.615 297.676
#>  [6,] ...     ...    
#>  [7,] -87.454 386.681
#>  [8,] -85.553 377.386
#>  [9,] -82.285 367.726
#> [10,] -79.883 357.566
#> [11,] -74.883 348.906
#> 
#> $latrappe
#> <xy [136 x 2]>
#>       [,1]     [,2]    
#>  [1,] -108.586  313.281
#>  [2,] -103.452  302.389
#>  [3,]  -96.952  291.131
#>  [4,]  -90.952  280.738
#>  [5,]  -84.452  269.480
#>  [6,] ...      ...     
#>  [7,] -144.354  379.233
#>  [8,] -140.452  366.475
#>  [9,] -133.586  356.583
#> [10,] -127.086  345.324
#> [11,] -121.086  334.932
#> 
#> $lindemanskriek
#> <xy [176 x 2]>
#>       [,1]     [,2]    
#>  [1,] -98.141  363.190 
#>  [2,] -94.141  356.262 
#>  [3,] -90.971  340.772 
#>  [4,] -87.337  332.477 
#>  [5,] -83.337  325.549 
#>  [6,] ...      ...     
#>  [7,] -112.919  422.786
#>  [8,] -110.651  414.858
#>  [9,] -108.749  405.563
#> [10,] -106.481  397.635
#> [11,] -102.311  380.413
#> 
#> $nicechouffe
#> <xy [146 x 2]>
#>       [,1]    [,2]   
#>  [1,] -46.088 317.033
#>  [2,] -42.954 309.604
#>  [3,] -37.919 292.882
#>  [4,] -33.419 285.088
#>  [5,] -30.285 277.660
#>  [6,] ...     ...    
#>  [7,] -62.464 373.396
#>  [8,] -61.062 364.968
#>  [9,] -58.294 356.174
#> [10,] -56.526 349.111
#> [11,] -51.990 333.255
#> 
#> $pecheresse
#> <xy [129 x 2]>
#>       [,1]     [,2]    
#>  [1,] -129.543  423.580
#>  [2,] -121.775  406.126
#>  [3,] -117.275  398.331
#>  [4,] -108.141  380.511
#>  [5,] -100.373  363.056
#>  [6,] ...      ...     
#>  [7,] -152.124  508.692
#>  [8,] -149.722  498.532
#>  [9,] -145.053  480.443
#> [10,] -139.883  461.489
#> [11,] -137.115  452.695
#> 
#> $sierranevada
#> <xy [176 x 2]>
#>       [,1]    [,2]   
#>  [1,] -56.275 292.676
#>  [2,] -50.275 282.284
#>  [3,] -50.275 282.284
#>  [4,] -43.775 271.026
#>  [5,] -37.775 260.633
#>  [6,] ...     ...    
#>  [7,] -85.543 347.370
#>  [8,] -80.775 335.111
#>  [9,] -76.507 323.719
#> [10,] -68.775 314.327
#> [11,] -68.775 314.327
#> 
#> $tanglefoot
#> <xy [174 x 2]>
#>       [,1]     [,2]    
#>  [1,] -78.533  305.229 
#>  [2,] -74.533  298.301 
#>  [3,] -70.533  291.372 
#>  [4,] -62.533  277.516 
#>  [5,] -57.667  271.088 
#>  [6,] ...      ...     
#>  [7,] -103.069  355.726
#>  [8,] -101.667  347.298
#>  [9,]  -98.533  339.870
#> [10,]  -91.399  325.513
#> [11,]  -87.399  318.585
#> 
#> $tauro
#> <xy [174 x 2]>
#>       [,1]     [,2]    
#>  [1,] -145.605  437.401
#>  [2,] -141.337  426.008
#>  [3,] -135.337  415.616
#>  [4,] -128.837  404.358
#>  [5,] -122.837  393.965
#>  [6,] ...      ...     
#>  [7,] -168.615  507.254
#>  [8,] -165.213  495.362
#>  [9,] -163.543  482.470
#> [10,] -159.275  471.077
#> [11,] -154.507  458.819
#> 
#> $westmalle
#> <xy [141 x 2]>
#>       [,1]    [,2]   
#>  [1,] -72.981 339.611
#>  [2,] -68.981 332.683
#>  [3,] -63.079 316.461
#>  [4,] -59.079 309.533
#>  [5,] -51.445 294.310
#>  [6,] ...     ...    
#>  [7,] -92.624 405.635
#>  [8,] -90.722 396.341
#>  [9,] -85.321 380.985
#> [10,] -84.285 371.190
#> [11,] -78.017 356.334
#> 
#> $amrut
#> <xy [191 x 2]>
#>       [,1]     [,2]    
#>  [1,] -107.739  373.815
#>  [2,] -102.739  365.154
#>  [3,]  -97.739  356.494
#>  [4,]  -92.739  347.834
#>  [5,]  -87.739  339.174
#>  [6,] ...      ...     
#>  [7,] -139.471  424.776
#>  [8,] -132.739  417.116
#>  [9,] -127.739  408.456
#> [10,] -122.739  399.795
#> [11,] -117.739  391.135
#> 
#> $ballantines
#> <xy [146 x 2]>
#>       [,1]     [,2]    
#>  [1,] -82.194  291.569 
#>  [2,] -74.194  277.712 
#>  [3,] -70.194  270.784 
#>  [4,] -62.694  257.794 
#>  [5,] -58.694  250.865 
#>  [6,] ...      ...     
#>  [7,] -117.694  353.056
#>  [8,] -109.694  339.200
#>  [9,] -105.694  332.272
#> [10,]  -97.694  318.415
#> [11,]  -94.194  312.353
#> 
#> $bushmills
#> <xy [165 x 2]>
#>       [,1]     [,2]    
#>  [1,] -102.249  394.305
#>  [2,]  -94.749  381.315
#>  [3,]  -86.749  367.458
#>  [4,]  -86.749  367.458
#>  [5,]  -79.249  354.468
#>  [6,] ...      ...     
#>  [7,] -142.481  459.989
#>  [8,] -134.981  446.999
#>  [9,] -126.981  433.142
#> [10,] -126.981  433.142
#> [11,] -119.481  420.152
#> 
#> $chivas
#> <xy [164 x 2]>
#>       [,1]     [,2]    
#>  [1,] -126.524  358.351
#>  [2,] -124.256  350.422
#>  [3,] -117.488  334.700
#>  [4,] -113.488  327.772
#>  [5,] -105.488  313.915
#>  [6,] ...      ...     
#>  [7,] -117.454  438.642
#>  [8,] -120.883  428.580
#>  [9,] -126.239  405.858
#> [10,] -127.435  395.929
#> [11,] -128.462  375.707
#> 
#> $dalmore
#> <xy [155 x 2]>
#>       [,1]    [,2]   
#>  [1,] -77.069 310.693
#>  [2,] -75.399 297.801
#>  [3,] -71.497 285.042
#>  [4,] -67.229 273.650
#>  [5,] -61.229 263.258
#>  [6,] ...     ...    
#>  [7,] -63.268 386.788
#>  [8,] -63.268 386.788
#>  [9,] -69.026 370.762
#> [10,] -73.919 355.236
#> [11,] -76.579 339.844
#> 
#> $famousgrouse
#> <xy [169 x 2]>
#>       [,1]    [,2]   
#>  [1,]  -7.366 283.963
#>  [2,]  -2.366 275.303
#>  [3,]   2.134 267.509
#>  [4,]   7.134 258.849
#>  [5,]   7.134 258.849
#>  [6,] ...     ...    
#>  [7,] -33.098 324.533
#>  [8,] -28.098 315.872
#>  [9,] -28.098 315.872
#> [10,] -23.598 308.078
#> [11,] -18.598 299.418
#> 
#> $glendronach
#> <xy [197 x 2]>
#>       [,1]     [,2]    
#>  [1,] -90.883  376.619 
#>  [2,] -84.883  366.226 
#>  [3,] -78.017  356.334 
#>  [4,] -78.017  356.334 
#>  [5,] -72.017  345.942 
#>  [6,] ...      ...     
#>  [7,] -121.749  428.080
#>  [8,] -115.749  417.688
#>  [9,] -108.883  407.795
#> [10,] -108.883  407.795
#> [11,] -102.883  397.403
#> 
#> $glenmorangie
#> <xy [179 x 2]>
#>       [,1]     [,2]    
#>  [1,] -149.703  438.499
#>  [2,] -140.337  424.276
#>  [3,] -140.337  424.276
#>  [4,] -132.337  410.420
#>  [5,] -122.971  396.197
#>  [6,] ...      ...     
#>  [7,] -182.409  513.147
#>  [8,] -178.373  498.156
#>  [9,] -173.337  481.434
#> [10,] -165.703  466.211
#> [11,] -165.703  466.211
#> 
#> $highlandpark
#> <xy [169 x 2]>
#>       [,1]     [,2]    
#>  [1,] -85.729  305.693 
#>  [2,] -78.729  293.569 
#>  [3,] -78.729  293.569 
#>  [4,] -71.729  281.444 
#>  [5,] -64.729  269.320 
#>  [6,] ...      ...     
#>  [7,] -121.595  365.815
#>  [8,] -113.729  354.190
#>  [9,] -106.729  342.066
#> [10,]  -99.729  329.942
#> [11,]  -99.729  329.942
#> 
#> $jackdaniels
#> <xy [150 x 2]>
#>       [,1]     [,2]    
#>  [1,] -89.043  353.432 
#>  [2,] -82.543  342.174 
#>  [3,] -76.043  330.915 
#>  [4,] -69.543  319.657 
#>  [5,] -63.043  308.399 
#>  [6,] ...      ...     
#>  [7,] -122.481  425.348
#>  [8,] -117.213  412.224
#>  [9,] -113.311  399.465
#> [10,] -107.677  387.707
#> [11,] -100.311  376.949
#> 
#> $jb
#> <xy [174 x 2]>
#>       [,1]     [,2]    
#>  [1,] -164.863  444.757
#>  [2,] -159.363  435.231
#>  [3,] -155.229  426.070
#>  [4,] -144.229  407.018
#>  [5,] -137.863  397.992
#>  [6,] ...      ...     
#>  [7,] -203.229  509.209
#>  [8,] -199.462  498.683
#>  [9,] -192.729  491.022
#> [10,] -180.863  472.470
#> [11,] -175.363  462.943
#> 
#> $johnniewalker
#> <xy [168 x 2]>
#>       [,1]    [,2]   
#>  [1,]  91.079 181.452
#>  [2,]  93.079 177.988
#>  [3,]  95.079 174.524
#>  [4,]  97.079 171.060
#>  [5,] 101.945 164.631
#>  [6,] ...     ...    
#>  [7,]  77.079 205.701
#>  [8,]  79.079 202.237
#>  [9,]  83.079 195.308
#> [10,]  85.079 191.844
#> [11,]  87.079 188.380
#> 
#> $magallan
#> <xy [141 x 2]>
#>       [,1]     [,2]    
#>  [1,] -67.553  346.210 
#>  [2,] -60.053  333.219 
#>  [3,] -54.821  328.157 
#>  [4,] -47.821  316.033 
#>  [5,] -39.454  303.542 
#>  [6,] ...      ...     
#>  [7,] -102.651  401.001
#>  [8,]  -99.151  394.939
#>  [9,]  -92.151  382.815
#> [10,]  -82.919  370.824
#> [11,]  -79.419  364.762
#> 
#> $makersmark
#> <xy [177 x 2]>
#>       [,1]     [,2]    
#>  [1,] -125.756  353.020
#>  [2,] -126.684  338.628
#>  [3,] -126.746  324.736
#>  [4,] -126.746  324.736
#>  [5,] -122.344  311.111
#>  [6,] ...      ...     
#>  [7,] -111.687  424.652
#>  [8,] -109.017  410.027
#>  [9,] -110.579  398.733
#> [10,] -110.579  398.733
#> [11,] -117.703  383.073
#> 
#> $oban
#> <xy [179 x 2]>
#>       [,1]     [,2]    
#>  [1,] -101.017  396.171
#>  [2,]  -96.517  388.377
#>  [3,]  -88.017  373.654
#>  [4,]  -84.017  366.726
#>  [5,]  -79.517  358.932
#>  [6,] ...      ...     
#>  [7,] -132.749  447.133
#>  [8,] -127.383  439.838
#>  [9,] -123.383  432.910
#> [10,] -118.883  425.116
#> [11,] -110.383  410.394
#> 
#> $oldpotrero
#> <xy [131 x 2]>
#>       [,1]    [,2]   
#>  [1,] -18.222 270.767
#>  [2,] -19.419 260.839
#>  [3,] -20.615 250.911
#>  [4,] -19.043 232.188
#>  [5,] -17.141 222.894
#>  [6,] ...     ...    
#>  [7,] -16.546 339.863
#>  [8,] -14.278 331.935
#>  [9,] -14.108 321.640
#> [10,] -15.634 302.284
#> [11,] -16.330 291.490
#> 
#> $redbreast
#> <xy [177 x 2]>
#>       [,1]    [,2]   
#>  [1,]  37.830 217.681
#>  [2,]  38.598 212.351
#>  [3,]  38.866 207.887
#>  [4,]  41.268 197.727
#>  [5,]  43.268 194.263
#>  [6,] ...     ...    
#>  [7,]  51.543 257.930
#>  [8,]  49.213 251.966
#>  [9,]  46.883 246.002
#> [10,]  42.588 235.440
#> [11,]  40.258 229.476
#> 
#> $tamdhu
#> <xy [176 x 2]>
#>       [,1]     [,2]    
#>  [1,] -170.167  465.943
#>  [2,] -164.167  455.551
#>  [3,] -157.667  444.293
#>  [4,] -151.667  433.901
#>  [5,] -145.667  423.508
#>  [6,] ...      ...     
#>  [7,] -209.265  527.663
#>  [8,] -204.997  516.271
#>  [9,] -198.131  506.379
#> [10,] -191.265  496.486
#> [11,] -184.399  486.594
#> 
#> $wildturkey
#> <xy [185 x 2]>
#>       [,1]     [,2]    
#>  [1,] -205.514  465.166
#>  [2,] -198.514  453.042
#>  [3,] -191.514  440.917
#>  [4,] -184.514  428.793
#>  [5,] -177.514  416.668
#>  [6,] ...      ...     
#>  [7,] -244.782  537.180
#>  [8,] -240.014  524.922
#>  [9,] -236.112  512.163
#> [10,] -229.112  500.039
#> [11,] -222.112  487.915
#> 
#> $yoichi
#> <xy [123 x 2]>
#>       [,1]     [,2]    
#>  [1,] -68.847  330.451 
#>  [2,] -61.347  317.461 
#>  [3,] -54.347  305.336 
#>  [4,] -46.847  292.346 
#>  [5,] -39.347  279.356 
#>  [6,] ...      ...     
#>  [7,] -106.213  393.171
#>  [8,] -102.713  387.109
#>  [9,]  -95.213  374.119
#> [10,]  -88.213  361.994
#> [11,]  -79.847  349.504
#> 
#> attr(,"class")
#> [1] "out"  "coo"  "list"