Как пересечь линейный объект (определяемый координатами) с перпендикулярными линиями? - PullRequest
0 голосов
/ 09 ноября 2019

Я определил структуру линейных сегментов между координатами в виде фрейма данных.

Я рассчитал средние точки этих сегментов, а также градиент для перпендикулярных линий через средние точки.

Цель состоит в том, чтобы получить точки пересечения другой стороны, так сказать, «ширины» объекта (расстояние между пересечением и средними точками). Изображение графика (средние точки и сегменты) Я попробовал некоторые методы пересечения различных пакетов в R. Однако я не нашел способа получить эти точки.

test_xml <- readPicture()


test_paths <- data.frame(x = test_xml@paths$path@x, y =
test_xml@paths$path@y)

test_paths_mid <- test_paths[!duplicated(test_paths), ]
test_paths_clean <- data.frame(x = test_paths_mid$x, y =
test_paths_mid$y)

test_paths1 <- data.frame(ID = seq(nrow(test_paths_clean)),
test_paths_clean)

Gradient <- (((shift(test_paths1$y, type = "lead")) - test_paths1$y) /
((shift(test_paths1$x, type = "lead")) - test_paths1$x))

test_paths2 <- data.frame(test_paths1, Gradient = Gradient)


b <- (test_paths2$y - test_paths2$Gradient * test_paths2$x)

x_midpoint <- ((shift(test_paths2$x, type = "lead") - test_paths2$x) / 2)
+ test_paths2$x

y_midpoint <- (test_paths2$Gradient * x_midpoint) + b

test_paths3 <- data.frame(test_paths2, x_midpoint, y_midpoint)


Gradient_2 <- ((-1) / Gradient)

b_2 <- test_paths3$y_midpoint - (Gradient_2 * test_paths3$x_midpoint)

zeropoints_x <- ((-1) * b_2) / Gradient_2
zeropoints_x <- data.frame(x = zeropoints_x , y = 0)
zeropoints_x[is.na(zeropoints_x)] <- 0

zeropoints_y <- data.frame(y = b_2)
zeropoints_y[is.na(zeropoints_y)] <- 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...