Я пытаюсь построить дугу окружности, используя три точки, и получил это изображение
Но, как вы видите, дуга не совсем гладкая, поскольку вы видите «зигзаги» внутри траектории. Как мы можем их удалить?
Вот часть моего кода:
library(ggplot2)
plot_arc <- function(C, r, P1, P2, P3) {
t <- seq(atan2(P1[2] - C[2], P1[1] - C[1]), atan2(P2[2] - C[2], P2[1] - C[1]), length.out = 100000)
x <- C[1] + r * cos(t)
y <- C[2] + r * sin(t)
data <- data.frame(x = x, y = y)
p <- ggplot() +
geom_path(data = data, aes(x = x, y = y), color = "blue", size=1.) +
geom_point(aes(x = P1[1], y = P1[2]), color = "red", size = 3) +
geom_point(aes(x = P2[1], y = P2[2]), color = "green", size = 3) +
geom_point(aes(x = P3[1], y = P3[2]), color = "yellow", size = 3) +
coord_fixed()
print(p)
}
plot_arc(C_optimal, r_optimal, P1, P2, P3)
Попробуйте geom_smooth()
.
Я не думаю, что вам действительно нужен аргумент t
, поскольку ваш y
уже является функцией x
, например, y <- arcfun(x)
Ниже приведен пример с фиктивным вводом C
и r
.
C <- c(1, 4)
r <- 2
arcfun <- function(x) C[2] - r * sqrt(1 - ((x - C[1]) / r)^2)
curve(arcfun, from = C[1], to = C[1] + r)
grid(10, 10)
Спасибо, но в вашем сюжете та же проблема, но, как говорится в другом ответе, это вопрос разрешения.
@Помни, да, это имеет смысл
На экране оно выглядит зигзагообразным из-за плохого разрешения экрана. Если вы сохраните график в файл, указав высокое разрешение, то получите гораздо более плавную дугу. Аналогично, если вы сохраните график в файл PDF.
plot_arc(C_optimal, r_optimal, P1, P2, P3)
ggsave("arc.jpeg", dpi=500)
У нас нет C_optimal, r_optimal, P1, P2, P3.