求出 R 中直线的角度、斜率和截距

Find the angle, slope and intercept of a line within R

我正在尝试计算与第 1 行成 60 度或 pi/3 的第 3 行的角度、斜率和截距。我知道其他行的信息。

x1 = 652 
x2 = 1017 
y1 = 194
y2 = 632

## Line 1 information 
angle.l1 = 1.565595
slope.l1 = 1.2
intercept.l1 = -588.4

## Line 2 information
angle.l2 = 0.5183978
slope.l2 = 0.5704363
intercept.l2 = 51.8663

我想将结果保存为 angle.l3slope.l3intercept.l3

你是如何得出 angle.l1 = 1.565595 结论的?

## "line1" passes (x1, y1) and (x2, y2)
slope.l1 <- (y2 - y1) / (x2 - x1)
#[1] 1.2
angle.l1 <- atan(slope.l1)
#[1] 0.8760581

还有,你是怎么得出"line3"和"line1"的夹角是pi / 3的?如果是这样,因为 "line3" 与 x-axis 的角度大于 "line1" 与 x-axis 的角度,那么:

angle.l3 <- angle.l1 + pi / 3
#[1] 1.923256
slope.l3 <- tan(angle.l3)
#[1] -2.718736

你得到 "line3" 的负斜率,根据你的数字,这不正确。


幸运的是你"line2"的信息是正确的。

angle.l2 <- 0.5183978
slope.l2 <- 0.5704363
intercept.l2 <- 51.8663

你是说"line2"和"line3"的夹角是pi / 3吗?如果是这样,

angle.l3 <- angle.l2 + pi / 3
#[1] 1.923256
angle.l3 * 180 / pi
#[1] 89.70201

这就是说 "line3" 与 x-axis 几乎成 90 度角,从你的图表来看这并不正确。


"line1"、"line2"和"line3"之间有什么关系?这是一条你没有提到的重要信息。如果 "line3" 是 "line2" 围绕 "line1" 的反映,那么解决方案很简单:

angle.l3 <- angle.l1 + (angle.l1 - angle.l2)
#[1] 1.233718
angle.l3 * 180 / pi
#[1] 70.68685

Em,70.68度看起来很合理。所以:

slope.l3 <- tan(angle.l3)
#[1] 2.853452

# "line3" passes (0, intercept.l3) and (x2, y2)
intercept.l3 <- y2 - slope.l3 * x2
#[1] -2269.961