使用R中的欧式距离在曲线上找到X,Y坐标

问题描述

在尝试阅读我的研究之后,我试图根据欧几里得距离从一条曲线中提取三个点。从曲线的最左端开始,我想在起点(已经可以做到),直线的中点和三分之二处提取X,Y值。但是,我不知道如何使用欧几里得距离来找到相应的X和Y值,而我想复制的研究对象的方法并没有概述其完成方法,因此希望您的好人能够为您提供帮助

如果我的数据看起来像这样(实际数据每行包含21个X和21个Y值):

df <- data.frame(x = c(-4,-3,-2,-1,1,2,3,4),y = c(1.5,1.5,1.25,0.8,-1.2,-2.8,-4))

在视觉上看起来像:

plot(df)
lines(df)

Example curve

欧几里德距离为:

根据Roland和Bertil的反馈进行了更新

cumsum(diag(as.matrix(dist(cbind(df$x,df$y),method = "euclidean"))[-1,]))

[1]  1.000000  2.000000  3.030776  4.127362  5.407987  6.970037  8.856833 10.418883

如何提取直线中间和直线75%的点?

我们将不胜感激。

解决方法

首先,我们计算所有品脱之间的距离并将其另存为矩阵

dist_m <- dist(df) %>% 
  as.matrix()

然后我们可以通过提取下对角线[(2,1),(3,2),...]并将其累加起来得出累积距离

dist_m[2:nrow(dist_m),1:(nrow(dist_m)-1)] %>% 
 diag() %>% 
 cumsum()

其余的应该很简单