我计算了这些线段的中点,以及通过中点的垂直线的坡度。
目标是获得另一侧的交点,即对象的“宽度”(交点和中点之间的距离)。 Picture of Plot (midpoints and segments) 我尝试了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