【发布时间】:2018-07-04 18:27:03
【问题描述】:
我正在尝试创建或找到一个计算两点之间距离和角度的函数,我的想法是我可以有两个 x,y 坐标的 data.frames,如下所示:
示例数据集
From <- data.frame(x = c(0.5,1, 4, 0), y = c(1.5,1, 1, 0))
To <- data.frame(x =c(3, 0, 5, 1), y =c(3, 0, 6, 1))
当前函数
目前,我已经设法使用毕达哥拉斯开发了距离部分:
distance <- function(from, to){
D <- sqrt((abs(from[,1]-to[,1])^2) + (abs(from[,2]-to[,2])^2))
return(D)
}
效果很好:
distance(from = From, to = To)
[1] 2.915476 1.414214 5.099020 1.414214
但我不知道如何获得角度部分。
到目前为止我尝试了什么:
我尝试改编this question的第二种解决方案
angle <- function(x,y){
dot.prod <- x%*%y
norm.x <- norm(x,type="2")
norm.y <- norm(y,type="2")
theta <- acos(dot.prod / (norm.x * norm.y))
as.numeric(theta)
}
x <- as.matrix(c(From[,1],To[,1]))
y <- as.matrix(c(From[,2],To[,2]))
angle(t(x),y)
但我显然把它弄得一团糟
期望的输出
我想将函数的角度部分添加到我的第一个函数中,在这里我可以得到 from 和 to 数据帧之间的距离和角度
【问题讨论】:
-
对您的距离函数的小评论:
abs是不必要的。正方形总是正数。
标签: r function vector distance angle