Rotate shape so the first point is exactly on an axis.
Usage
coo_untilt_x(x, ..., .cols = NULL, .ldk_col = NULL)
coo_untilt_y(x, ..., .cols = NULL, .ldk_col = NULL)Value
If
xis a single matrix: returns the rotated matrixIf
xis a list: returns a list of rotated matricesIf
xis a tibble: returns the tibble with rotated coo column(s)
Details
coo_untilt_x(): Rotates around centroid so first point is on x-axis (y=0).
coo_untilt_y(): Rotates around centroid so first point is on y-axis (x=0),
choosing the nearest y-axis (positive or negative).
Works best when shapes are centered.
See also
coo_rotate() for arbitrary rotation; coo_align() for principal axis alignment
Examples
# Untilt to x-axis
coo_untilt_x(shapes$cat)
#> <xy [120 x 2]>
#> [,1] [,2]
#> [1,] 11.032 209.099
#> [2,] 15.277 203.270
#> [3,] 16.661 207.023
#> [4,] 20.613 211.960
#> [5,] 27.281 212.699
#> [6,] ... ...
#> [7,] 33.556 221.043
#> [8,] 29.603 216.106
#> [9,] 22.244 213.491
#> [10,] 15.230 211.814
#> [11,] 8.909 212.013
# Untilt to y-axis
coo_untilt_y(bot$coo)
#> $brahma
#> <xy [138 x 2]>
#> [,1] [,2]
#> [1,] 561.287 32.362
#> [2,] 540.816 26.798
#> [3,] 529.900 25.444
#> [4,] 509.429 19.881
#> [5,] 488.958 14.318
#> [6,] ... ...
#> [7,] 655.194 47.037
#> [8,] 644.155 46.675
#> [9,] 623.315 44.089
#> [10,] 602.598 40.510
#> [11,] 592.797 38.287
#>
#> $caney
#> <xy [168 x 2]>
#> [,1] [,2]
#> [1,] 534.470 58.104
#> [2,] 524.683 56.048
#> [3,] 505.316 50.959
#> [4,] 495.324 49.882
#> [5,] 485.743 46.848
#> [6,] ... ...
#> [7,] 618.468 52.245
#> [8,] 597.045 56.942
#> [9,] 585.252 59.574
#> [10,] 574.849 60.454
#> [11,] 554.454 60.258
#>
#> $chimay
#> <xy [189 x 2]>
#> [,1] [,2]
#> [1,] 336.583 1.457
#> [2,] 328.673 0.259
#> [3,] 321.752 -0.790
#> [4,] 313.992 -2.978
#> [5,] 306.083 -4.177
#> [6,] ... ...
#> [7,] 383.562 -1.536
#> [8,] 374.903 2.209
#> [9,] 367.532 4.126
#> [10,] 359.323 4.904
#> [11,] 351.263 4.694
#>
#> $corona
#> <xy [129 x 2]>
#> [,1] [,2]
#> [1,] 435.572 -5.846
#> [2,] 425.765 -7.804
#> [3,] 404.976 -10.934
#> [4,] 395.365 -13.872
#> [5,] 384.578 -16.026
#> [6,] ... ...
#> [7,] 519.309 -16.663
#> [8,] 498.130 -12.733
#> [9,] 488.326 -9.592
#> [10,] 476.756 -7.822
#> [11,] 456.753 -4.677
#>
#> $deusventrue
#> <xy [152 x 2]>
#> [,1] [,2]
#> [1,] 486.528 -11.310
#> [2,] 477.087 -8.505
#> [3,] 458.205 -2.895
#> [4,] 448.893 -1.081
#> [5,] 428.157 3.279
#> [6,] ... ...
#> [7,] 563.264 -27.543
#> [8,] 552.961 -25.859
#> [9,] 534.208 -21.240
#> [10,] 524.896 -19.427
#> [11,] 506.401 -16.791
#>
#> $duvel
#> <xy [161 x 2]>
#> [,1] [,2]
#> [1,] 320.592 12.920
#> [2,] 309.885 10.396
#> [3,] 299.179 7.871
#> [4,] 299.179 7.871
#> [5,] 288.473 5.347
#> [6,] ... ...
#> [7,] 376.134 12.660
#> [8,] 364.280 15.002
#> [9,] 353.629 16.600
#> [10,] 353.629 16.600
#> [11,] 342.464 16.022
#>
#> $franziskaner
#> <xy [124 x 2]>
#> [,1] [,2]
#> [1,] 442.184 10.490
#> [2,] 421.408 7.433
#> [3,] 411.515 5.977
#> [4,] 392.717 3.211
#> [5,] 382.824 1.755
#> [6,] ... ...
#> [7,] 535.067 18.094
#> [8,] 514.145 16.026
#> [9,] 503.960 16.549
#> [10,] 482.747 16.460
#> [11,] 472.854 15.004
#>
#> $grimbergen
#> <xy [126 x 2]>
#> [,1] [,2]
#> [1,] 405.989 -12.383
#> [2,] 395.869 -11.118
#> [3,] 374.925 -12.652
#> [4,] 363.955 -13.455
#> [5,] 353.981 -14.186
#> [6,] ... ...
#> [7,] 491.104 -38.236
#> [8,] 470.135 -25.734
#> [9,] 458.726 -20.553
#> [10,] 448.461 -17.294
#> [11,] 427.078 -12.844
#>
#> $guiness
#> <xy [183 x 2]>
#> [,1] [,2]
#> [1,] 390.347 -24.811
#> [2,] 382.398 -25.720
#> [3,] 374.450 -26.629
#> [4,] 365.508 -27.652
#> [5,] 349.612 -29.469
#> [6,] ... ...
#> [7,] 447.432 -22.309
#> [8,] 438.263 -21.345
#> [9,] 422.906 -19.075
#> [10,] 415.071 -20.977
#> [11,] 406.243 -22.993
#>
#> $hoegardeen
#> <xy [193 x 2]>
#> [,1] [,2]
#> [1,] 544.873 28.519
#> [2,] 531.724 28.826
#> [3,] 519.824 27.278
#> [4,] 506.933 25.601
#> [5,] 494.041 23.924
#> [6,] ... ...
#> [7,] 621.310 22.327
#> [8,] 607.903 24.617
#> [9,] 595.616 26.044
#> [10,] 582.209 28.334
#> [11,] 569.189 27.648
#>
#> $jupiler
#> <xy [156 x 2]>
#> [,1] [,2]
#> [1,] 516.548 -37.789
#> [2,] 502.523 -37.256
#> [3,] 489.530 -37.690
#> [4,] 475.538 -38.157
#> [5,] 461.545 -38.624
#> [6,] ... ...
#> [7,] 599.136 -54.042
#> [8,] 584.977 -49.512
#> [9,] 571.885 -46.948
#> [10,] 557.759 -43.417
#> [11,] 543.667 -40.886
#>
#> $kingfisher
#> <xy [182 x 2]>
#> [,1] [,2]
#> [1,] 390.423 8.191
#> [2,] 380.630 6.167
#> [3,] 371.816 4.345
#> [4,] 362.023 2.321
#> [5,] 352.230 0.297
#> [6,] ... ...
#> [7,] 449.246 10.137
#> [8,] 439.825 11.254
#> [9,] 429.628 11.188
#> [10,] 419.227 12.102
#> [11,] 409.434 10.078
#>
#> $latrappe
#> <xy [136 x 2]>
#> [,1] [,2]
#> [1,] 380.079 86.815
#> [2,] 368.297 84.327
#> [3,] 355.845 80.593
#> [4,] 344.351 77.147
#> [5,] 331.898 73.413
#> [6,] ... ...
#> [7,] 452.494 106.439
#> [8,] 439.180 105.579
#> [9,] 427.973 101.175
#> [10,] 415.520 97.441
#> [11,] 404.026 93.995
#>
#> $lindemanskriek
#> <xy [176 x 2]>
#> [,1] [,2]
#> [1,] 430.276 28.133
#> [2,] 422.443 26.505
#> [3,] 406.740 28.348
#> [4,] 397.725 27.496
#> [5,] 389.892 25.869
#> [6,] ... ...
#> [7,] 491.501 23.492
#> [8,] 483.261 23.823
#> [9,] 473.839 24.929
#> [10,] 465.600 25.259
#> [11,] 447.938 26.696
#>
#> $nicechouffe
#> <xy [146 x 2]>
#> [,1] [,2]
#> [1,] 370.035 10.901
#> [2,] 362.040 9.868
#> [3,] 344.579 9.489
#> [4,] 335.865 7.238
#> [5,] 327.870 6.205
#> [6,] ... ...
#> [7,] 428.725 11.603
#> [8,] 420.229 12.506
#> [9,] 411.015 12.192
#> [10,] 403.737 12.377
#> [11,] 387.245 12.248
#>
#> $pecheresse
#> <xy [129 x 2]>
#> [,1] [,2]
#> [1,] 497.480 -38.831
#> [2,] 478.405 -37.758
#> [3,] 469.416 -38.196
#> [4,] 449.391 -38.171
#> [5,] 430.316 -37.098
#> [6,] ... ...
#> [7,] 583.499 -57.666
#> [8,] 573.364 -55.157
#> [9,] 555.142 -51.039
#> [10,] 535.922 -46.969
#> [11,] 526.835 -45.410
#>
#> $sierranevada
#> <xy [176 x 2]>
#> [,1] [,2]
#> [1,] 349.562 -23.507
#> [2,] 337.631 -24.799
#> [3,] 337.631 -24.799
#> [4,] 324.707 -26.198
#> [5,] 312.777 -27.490
#> [6,] ... ...
#> [7,] 411.417 -18.821
#> [8,] 398.277 -18.232
#> [9,] 386.131 -17.536
#> [10,] 374.416 -20.816
#> [11,] 374.416 -20.816
#>
#> $tanglefoot
#> <xy [174 x 2]>
#> [,1] [,2]
#> [1,] 369.924 12.219
#> [2,] 362.030 10.920
#> [3,] 354.136 9.622
#> [4,] 338.348 7.024
#> [5,] 330.617 4.739
#> [6,] ... ...
#> [7,] 425.830 17.364
#> [8,] 417.449 19.025
#> [9,] 409.393 18.713
#> [10,] 393.443 17.102
#> [11,] 385.549 15.804
#>
#> $tauro
#> <xy [174 x 2]>
#> [,1] [,2]
#> [1,] 516.327 -42.043
#> [2,] 504.277 -40.368
#> [3,] 492.281 -40.693
#> [4,] 479.286 -41.045
#> [5,] 467.291 -41.370
#> [6,] ... ...
#> [7,] 588.706 -55.089
#> [8,] 576.630 -52.415
#> [9,] 564.499 -47.741
#> [10,] 552.449 -46.067
#> [11,] 539.400 -44.419
#>
#> $westmalle
#> <xy [141 x 2]>
#> [,1] [,2]
#> [1,] 399.530 -22.624
#> [2,] 391.587 -23.576
#> [3,] 374.351 -22.620
#> [4,] 366.407 -23.572
#> [5,] 349.409 -24.601
#> [6,] ... ...
#> [7,] 467.958 -30.538
#> [8,] 458.665 -28.631
#> [9,] 442.421 -27.556
#> [10,] 433.009 -24.655
#> [11,] 416.885 -24.573
#>
#> $amrut
#> <xy [191 x 2]>
#> [,1] [,2]
#> [1,] 443.803 27.725
#> [2,] 433.985 25.828
#> [3,] 424.167 23.930
#> [4,] 414.348 22.032
#> [5,] 404.530 20.135
#> [6,] ... ...
#> [7,] 502.333 41.075
#> [8,] 492.895 37.214
#> [9,] 483.076 35.316
#> [10,] 473.258 33.419
#> [11,] 463.440 31.521
#>
#> $ballantines
#> <xy [146 x 2]>
#> [,1] [,2]
#> [1,] 357.460 33.394
#> [2,] 341.777 30.228
#> [3,] 333.935 28.645
#> [4,] 319.231 25.677
#> [5,] 311.390 24.094
#> [6,] ... ...
#> [7,] 427.056 47.443
#> [8,] 411.373 44.277
#> [9,] 403.531 42.694
#> [10,] 387.847 39.528
#> [11,] 380.986 38.143
#>
#> $bushmills
#> <xy [165 x 2]>
#> [,1] [,2]
#> [1,] 460.894 26.396
#> [2,] 446.236 23.213
#> [3,] 430.600 19.818
#> [4,] 430.600 19.818
#> [5,] 415.941 16.636
#> [6,] ... ...
#> [7,] 535.716 44.689
#> [8,] 521.058 41.506
#> [9,] 505.422 38.111
#> [10,] 505.422 38.111
#> [11,] 490.764 34.928
#>
#> $chivas
#> <xy [164 x 2]>
#> [,1] [,2]
#> [1,] 434.470 57.389
#> [2,] 426.230 57.705
#> [3,] 409.182 56.173
#> [4,] 401.352 54.532
#> [5,] 385.692 51.248
#> [6,] ... ...
#> [7,] 507.938 23.751
#> [8,] 499.445 30.144
#> [9,] 479.523 42.315
#> [10,] 470.462 46.545
#> [11,] 451.566 53.822
#>
#> $dalmore
#> <xy [155 x 2]>
#> [,1] [,2]
#> [1,] 367.659 71.914
#> [2,] 354.685 72.724
#> [3,] 341.417 71.317
#> [4,] 329.422 69.292
#> [5,] 318.079 65.376
#> [6,] ... ...
#> [7,] 439.746 43.904
#> [8,] 439.746 43.904
#> [9,] 425.106 52.603
#> [10,] 410.792 60.356
#> [11,] 396.186 65.893
#>
#> $famousgrouse
#> <xy [169 x 2]>
#> [,1] [,2]
#> [1,] 325.734 -40.836
#> [2,] 315.898 -42.643
#> [3,] 307.046 -44.268
#> [4,] 297.211 -46.074
#> [5,] 297.211 -46.074
#> [6,] ... ...
#> [7,] 372.583 -30.199
#> [8,] 362.747 -32.006
#> [9,] 362.747 -32.006
#> [10,] 353.895 -33.631
#> [11,] 344.060 -35.437
#>
#> $glendronach
#> <xy [197 x 2]>
#> [,1] [,2]
#> [1,] 439.552 36.717
#> [2,] 427.924 33.753
#> [3,] 416.543 29.820
#> [4,] 416.543 29.820
#> [5,] 404.915 26.855
#> [6,] ... ...
#> [7,] 497.445 52.508
#> [8,] 485.817 49.543
#> [9,] 474.436 45.610
#> [10,] 474.436 45.610
#> [11,] 462.808 42.646
#>
#> $glenmorangie
#> <xy [179 x 2]>
#> [,1] [,2]
#> [1,] 518.629 46.448
#> [2,] 502.129 42.235
#> [3,] 502.129 42.235
#> [4,] 486.421 39.193
#> [5,] 469.921 34.979
#> [6,] ... ...
#> [7,] 599.862 53.012
#> [8,] 584.375 54.088
#> [9,] 566.925 54.783
#> [10,] 550.045 52.532
#> [11,] 550.045 52.532
#>
#> $highlandpark
#> <xy [169 x 2]>
#> [,1] [,2]
#> [1,] 372.202 29.507
#> [2,] 358.459 26.838
#> [3,] 358.459 26.838
#> [4,] 344.716 24.169
#> [5,] 330.972 21.499
#> [6,] ... ...
#> [7,] 440.727 43.836
#> [8,] 427.175 40.185
#> [9,] 413.432 37.515
#> [10,] 399.688 34.846
#> [11,] 399.688 34.846
#>
#> $jackdaniels
#> <xy [150 x 2]>
#> [,1] [,2]
#> [1,] 417.896 26.975
#> [2,] 405.197 24.195
#> [3,] 392.498 21.416
#> [4,] 379.798 18.636
#> [5,] 367.099 15.857
#> [6,] ... ...
#> [7,] 496.566 37.028
#> [8,] 482.462 35.988
#> [9,] 469.121 36.139
#> [10,] 456.208 34.337
#> [11,] 443.723 30.580
#>
#> $jb
#> <xy [174 x 2]>
#> [,1] [,2]
#> [1,] 530.710 46.441
#> [2,] 519.865 44.601
#> [3,] 509.839 43.914
#> [4,] 488.149 40.233
#> [5,] 477.471 37.407
#> [6,] ... ...
#> [7,] 604.486 59.974
#> [8,] 593.306 60.106
#> [9,] 583.782 56.461
#> [10,] 562.259 51.795
#> [11,] 551.414 49.954
#>
#> $johnniewalker
#> <xy [168 x 2]>
#> [,1] [,2]
#> [1,] 200.132 -90.890
#> [2,] 196.232 -91.777
#> [3,] 192.331 -92.664
#> [4,] 188.431 -93.551
#> [5,] 180.852 -96.300
#> [6,] ... ...
#> [7,] 227.435 -84.682
#> [8,] 223.535 -85.569
#> [9,] 215.734 -87.343
#> [10,] 211.834 -88.230
#> [11,] 207.933 -89.117
#>
#> $magallan
#> <xy [141 x 2]>
#> [,1] [,2]
#> [1,] 402.418 -41.864
#> [2,] 387.479 -43.217
#> [3,] 380.688 -45.841
#> [4,] 366.745 -47.104
#> [5,] 351.897 -49.453
#> [6,] ... ...
#> [7,] 466.882 -33.012
#> [8,] 459.911 -33.643
#> [9,] 445.968 -34.906
#> [10,] 431.210 -38.251
#> [11,] 424.238 -38.883
#>
#> $makersmark
#> <xy [177 x 2]>
#> [,1] [,2]
#> [1,] 429.638 54.741
#> [2,] 416.296 60.220
#> [3,] 403.152 64.717
#> [4,] 403.152 64.717
#> [5,] 388.835 64.900
#> [6,] ... ...
#> [7,] 493.018 18.521
#> [8,] 478.307 20.664
#> [9,] 468.104 25.753
#> [10,] 468.104 25.753
#> [11,] 455.542 37.508
#>
#> $oban
#> <xy [179 x 2]>
#> [,1] [,2]
#> [1,] 461.831 -32.208
#> [2,] 452.868 -33.025
#> [3,] 435.938 -34.568
#> [4,] 427.971 -35.294
#> [5,] 419.008 -36.111
#> [6,] ... ...
#> [7,] 521.401 -24.769
#> [8,] 512.529 -26.582
#> [9,] 504.562 -27.308
#> [10,] 495.600 -28.125
#> [11,] 478.670 -29.669
#>
#> $oldpotrero
#> <xy [131 x 2]>
#> [,1] [,2]
#> [1,] 318.021 -0.645
#> [2,] 308.740 3.078
#> [3,] 299.459 6.801
#> [4,] 280.967 10.124
#> [5,] 271.497 10.691
#> [6,] ... ...
#> [7,] 384.333 -20.134
#> [8,] 376.088 -20.274
#> [9,] 366.100 -17.776
#> [10,] 347.796 -11.296
#> [11,] 337.549 -7.832
#>
#> $redbreast
#> <xy [177 x 2]>
#> [,1] [,2]
#> [1,] 255.523 -4.674
#> [2,] 250.140 -4.806
#> [3,] 245.675 -4.544
#> [4,] 235.302 -5.728
#> [5,] 231.626 -7.305
#> [6,] ... ...
#> [7,] 293.869 -23.049
#> [8,] 288.222 -20.030
#> [9,] 282.575 -17.011
#> [10,] 272.595 -11.498
#> [11,] 266.948 -8.479
#>
#> $tamdhu
#> <xy [176 x 2]>
#> [,1] [,2]
#> [1,] 552.327 45.162
#> [2,] 540.501 43.130
#> [3,] 527.688 40.929
#> [4,] 515.861 38.898
#> [5,] 504.035 36.866
#> [6,] ... ...
#> [7,] 623.766 60.477
#> [8,] 611.600 60.417
#> [9,] 599.943 57.400
#> [10,] 588.285 54.383
#> [11,] 576.628 51.365
#>
#> $wildturkey
#> <xy [185 x 2]>
#> [,1] [,2]
#> [1,] 561.272 95.179
#> [2,] 547.550 92.404
#> [3,] 533.828 89.628
#> [4,] 520.106 86.852
#> [5,] 506.384 84.076
#> [6,] ... ...
#> [7,] 642.040 109.478
#> [8,] 628.902 108.861
#> [9,] 615.565 109.224
#> [10,] 601.843 106.448
#> [11,] 588.121 103.672
#>
#> $yoichi
#> <xy [123 x 2]>
#> [,1] [,2]
#> [1,] 390.047 8.951
#> [2,] 375.348 5.960
#> [3,] 361.630 3.169
#> [4,] 346.931 0.178
#> [5,] 332.232 -2.813
#> [6,] ... ...
#> [7,] 461.382 24.487
#> [8,] 454.523 23.091
#> [9,] 439.824 20.100
#> [10,] 426.105 17.309
#> [11,] 411.606 13.338
#>
#> attr(,"class")
#> [1] "out" "coo" "list"
# Works better after centering
shapes$cat %>% coo_center() %>% coo_untilt_x()
#> <xy [120 x 2]>
#> [,1] [,2]
#> [1,] 34.320 0.000
#> [2,] 38.565 -5.829
#> [3,] 39.949 -2.076
#> [4,] 43.902 2.861
#> [5,] 50.569 3.600
#> [6,] ... ...
#> [7,] 56.844 11.944
#> [8,] 52.891 7.007
#> [9,] 45.532 4.392
#> [10,] 38.519 2.715
#> [11,] 32.197 2.914
