【发布时间】:2014-03-11 19:29:05
【问题描述】:
我有一个如下所示的数据框:
structure(list(K = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), T = c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,
20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L,
33L, 34L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L,
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 32L), X = c(26.892, 23.904, 23.904,
23.904, 23.904, 23.904, 23.904, 23.904, 23.904, 20.916, 20.916,
20.916, 20.916, 20.916, 20.916, 20.916, 20.916, 20.916, 20.916,
20.916, 29.88, 20.916, 14.94, 8.964, 8.964, 5.976, 5.976, 5.976,
5.976, 5.976, 5.976, 5.976, 5.976, 5.976, 857.56, 860.54, 857.56,
857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56,
857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56,
857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56, 857.56,
857.56, 857.56, 857.56, 857.56, 857.56), Y = c(167.33, 167.33,
164.34, 164.34, 164.34, 164.34, 164.34, 164.34, 164.34, 143.42,
143.42, 143.42, 143.42, 143.42, 143.42, 143.42, 143.42, 143.42,
143.42, 143.42, 176.29, 182.27, 185.26, 188.24, 188.24, 188.24,
188.24, 188.24, 188.24, 188.24, 188.24, 188.24, 188.24, 188.24,
256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97,
256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97,
256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97,
256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97, 256.97
), V = c(2.1128, 1.494, 0, 0, 0, 0, 0, 10.564, 10.564, 0, 0,
0, 0, 0, 0, 0, 0, 0, 17.034, 19.422, 8.7114, 6.6814, 3.3407,
1.494, 1.494, 0, 0, 0, 0, 0, 0, 0, 0, 20.1, 0, 1.494, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1.494, 1.494), P = c(-135, -90, 0, 0, 0, 0, 0, -98.13,
-98.13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74.745, 90, 149.04, 153.43,
153.43, 180, 180, 0, 0, 0, 0, 0, 0, 0, 0, 41.987, 0, 180, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 90, 90)), .Names = c("K", "T", "X", "Y", "V",
"P"), row.names = c(NA, 66L), class = "data.frame")
因为我有 X、Y 位置,所以要制作两个向量,我应该考虑三个 X、Y 位置来计算一个角度。我知道:
theta <- acos( sum(a*b) / ( sqrt(sum(a * a)) * sqrt(sum(b * b)) ) )
来自另一个 stackoverflow 答案 (Angle between two vectors in R)。
我还需要计算每个 T 的角度作为每个 K 中的一个因子。我知道我可以在其中使用 split。
但是如何定义计算角度的向量和角度本身的函数呢?谢谢。
在这张图上,我有一个运动的 X、Y 位置,我需要计算运动的角度。我希望这会有所帮助。还应注意,第一个和最后一个 X、Y 位置没有可能的角度。谢谢
【问题讨论】:
-
感谢您以一种很好的方式分享数据,但我仍然对您想要的内容感到困惑。你说你有 3 个 (x,y) 位置,所以我假设 (K,T)、(X,Y) 和 (V,P)。 (这实际上看起来不对,但我不知道还能怎么想。)哪个是角的顶点?你如何理解“每 K 作为一个因素”?在您的示例中,所有
K值都是 1。 -
这只是我的数据的头部。我有多个K。我没有固定的顶点,我有一个移动的顶点。 K,T,X,Y,V,P 不是我的 X,Y 位置,它们是我的列。只应使用 X、Y 位置进行计算。
-
好的,那么,在数据的头部,您想根据行数计算哪些角度?某种运行角度,第 1,2,3 行中 (X,Y) 之间的角度,然后是 2,3,4,然后是 3,4,5? (X,Y) 的每个组合? T、V、P 列对这个问题有影响吗?
-
是的,你是对的。 T,V,P 无关紧要。它们只是我数据框中的变量。
-
您的问题仍然有点令人困惑。也许,为了澄清,您可以附上一张图表,说明您尝试做什么以及预期结果的示例。
标签: r trigonometry angle