给定两点得到 x 截距
Get x intercept given two points
这可能是一个有点简单的问题,但我似乎无法让它工作。
我想找到给定两个点的 x 截距。
假设我有以下两点:
(5,3) 和 (3,4)
我想找到 x 截距。
目前这就是我所拥有的。它正确地找到了 y 截距。在这种情况下 5.5.
var A = [5, 3];
var B = [3, 4];
function slope(a, b) {
if (a[0] == b[0]) {
return null;
}
return (b[1] - a[1]) / (b[0] - a[0]);
}
function intercept(point, slope) {
if (slope === null) {
// vertical line
return point[0];
}
return point[1] - slope * point[0];
}
var m = slope(A, B);
console.log(m);
var b = intercept(A, m);
console.log('intercept: ' + b);
function xIntercept(a, m) {
return a[0] - a[1] / m;
}
我建议您将点表示为 {x: 5, y: 3}
而不是 [5, 3]
,因为这样可以使代码的其余部分更加清晰。
给定一条直线 y = mx + n
,它在 y=0
时截取 x 轴。
0 = xm + n --> x = -n/m
所以 x 截距将为 -n/m
。
给定两个点 (x_1,y_1), (x_2,y_2)
,您可以这样找到斜率和 y 轴截距:
m = (y_2-y_1)/(x_2-x_1)
n = -x_1*(y_2-y_1)/(x_2-x_1) + y_1
那么,x 轴截距将为
x_1 - y_1*(x_2-x_1)/(y_2-y_1)
在JavaScript,
function x_intercept(a, b) {
return a[0] - a[1]*(b[0]-a[0])/(b[1]-a[1]);
}
x_intercept([5, 3], [3, 4]); // 11
我将用 "math" 而不是代码来解释它,也许这有助于理解这一切背后的原因:
直线的常用方程可以表示为:
y = kx + d
其中 k 是斜率,d 是线的 y 交点。
所以要计算 x 截距,您必须:
- 检查它是否是一条直线(例如,如果坡度==0)。如果是,则 2 个给定点的 x 坐标相等。如果它们为 0,则 x 交点为整条线。如果它们不为零,则没有 x 交集。
- 否则,您可以通过在上述等式中将 y 设置为零来获得 x 交点的 y 值,如下所示:0 = k*x + d
然后我们继续:
0 = k*x + d
0 = (-0,5)*x + 5,5
-5,5 = (-0,5)*x
11 = x
找到 x 交点在
这可能是一个有点简单的问题,但我似乎无法让它工作。
我想找到给定两个点的 x 截距。
假设我有以下两点: (5,3) 和 (3,4) 我想找到 x 截距。 目前这就是我所拥有的。它正确地找到了 y 截距。在这种情况下 5.5.
var A = [5, 3];
var B = [3, 4];
function slope(a, b) {
if (a[0] == b[0]) {
return null;
}
return (b[1] - a[1]) / (b[0] - a[0]);
}
function intercept(point, slope) {
if (slope === null) {
// vertical line
return point[0];
}
return point[1] - slope * point[0];
}
var m = slope(A, B);
console.log(m);
var b = intercept(A, m);
console.log('intercept: ' + b);
function xIntercept(a, m) {
return a[0] - a[1] / m;
}
我建议您将点表示为 {x: 5, y: 3}
而不是 [5, 3]
,因为这样可以使代码的其余部分更加清晰。
给定一条直线 y = mx + n
,它在 y=0
时截取 x 轴。
0 = xm + n --> x = -n/m
所以 x 截距将为 -n/m
。
给定两个点 (x_1,y_1), (x_2,y_2)
,您可以这样找到斜率和 y 轴截距:
m = (y_2-y_1)/(x_2-x_1)
n = -x_1*(y_2-y_1)/(x_2-x_1) + y_1
那么,x 轴截距将为
x_1 - y_1*(x_2-x_1)/(y_2-y_1)
在JavaScript,
function x_intercept(a, b) {
return a[0] - a[1]*(b[0]-a[0])/(b[1]-a[1]);
}
x_intercept([5, 3], [3, 4]); // 11
我将用 "math" 而不是代码来解释它,也许这有助于理解这一切背后的原因:
直线的常用方程可以表示为: y = kx + d
其中 k 是斜率,d 是线的 y 交点。
所以要计算 x 截距,您必须:
- 检查它是否是一条直线(例如,如果坡度==0)。如果是,则 2 个给定点的 x 坐标相等。如果它们为 0,则 x 交点为整条线。如果它们不为零,则没有 x 交集。
- 否则,您可以通过在上述等式中将 y 设置为零来获得 x 交点的 y 值,如下所示:0 = k*x + d
然后我们继续:
0 = k*x + d
0 = (-0,5)*x + 5,5
-5,5 = (-0,5)*x
11 = x
找到 x 交点在