R 旋转和平移多边形

R 旋转和平移多边形,r,leaflet,sf,R,Leaflet,Sf,当我试图将旋转和平移应用于矩形,然后在传单上将两者可视化时,遇到了一个问题。我试图将矩形旋转180°,然后向下平移 问题是,在该变换之后,新矩形似乎扭曲了(沿y轴更大),尽管它应该是相同的大小 在这里,我复制了我的代码和结果的照片。如果您有任何见解,我将不胜感激 library(sf) library(leaflet) rect <- rbind(c(-1, -5), c(1, -5), c(1, 5), c(-1, 5), c(-1, -5)) rect_poly<- st_po

当我试图将旋转和平移应用于矩形,然后在
传单
上将两者可视化时,遇到了一个问题。我试图将矩形旋转180°,然后向下平移

问题是,在该变换之后,新矩形似乎扭曲了(沿y轴更大),尽管它应该是相同的大小

在这里,我复制了我的代码和结果的照片。如果您有任何见解,我将不胜感激

library(sf)
library(leaflet)

rect <- rbind(c(-1, -5), c(1, -5), c(1, 5), c(-1, 5), c(-1, -5))
rect_poly<- st_polygon(list(rect))

angle <- pi
rotation_matrix <- matrix(c(cos(angle), sin(angle), -sin(angle), cos(angle)), 2, 2)
rect_rot<- st_polygon(list(rect))*rotation_matrix  + c(0, -50)

leaflet() %>%
  addPolygons(data = rect_poly) %>%
  addPolygons(data = rect_rot)
库(sf)
图书馆(单张)
rect它确实“看起来”拉长了。但这与你的旋转无关。例如,如果将它们相邻放置,它们的长度相同:

library(sf)
library(leaflet)

rect <- rbind(c(-1, -5), c(1, -5), c(1, 5), c(-1, 5), c(-1, -5))
rect_poly<- st_polygon(list(rect))

angle <- pi
rotation_matrix <- matrix(c(cos(angle), sin(angle), -sin(angle), cos(angle)), 2, 2)
rect_rot<- st_polygon(list(rect %*% rotation_matrix)) + c(4, 0)

leaflet() %>%
  addPolygons(data = rect_poly) %>%
  addPolygons(data = rect_rot)
库(sf)
图书馆(单张)
rect这取决于
传单的使用。
如果使用简单的笛卡尔
CRS
,则不会出现失真:

leaflet(options = leafletOptions(crs = leafletCRS(crsClass = "L.CRS.Simple"))) %>%
  addPolygons(data = rect_poly) %>%
  addPolygons(data = rect_rot)