2016-03-23 7 views
1

Dies könnte eine etwas einfache Frage, aber ich kann nicht scheinen, es funktioniert.Get x intercept gegeben zwei Punkte

Ich möchte den x-Schnittpunkt mit zwei Punkten finden.

Sagen wir, ich habe diese zwei Punkte: (5,3) und (3,4) Ich möchte den x-Schnittpunkt finden. Momentan habe ich das hier. Welches findet den y richtig abfangen. In diesem Fall 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); 

Antwort

3
function xIntercept(a, m) { 
    return a[0] - a[1]/m; 
} 

Ich würde Sie Punkte als {x: 5, y: 3} statt [5, 3] darstellen vorschlagen, weil es der Rest des Codes viel klarer macht.

+0

ist Ja. So einfach ist das. Vielen Dank. – Sigmundur

+0

Bonus: Wie spezifiziert man y als etwas anderes als 0? Zum Beispiel, wenn ich den x-Schnittpunkt haben möchte, wo y = 20? – Sigmundur

+0

bedenken Sie, dass m null sein könnte. Überprüfen Sie in diesem Fall a [0] wenn a [0] == 0, dann liegt jeder Punkt der Linie auf der x-Achse. Wenn nicht, gibt es keinen x-Schnittpunkt –

4

Bei einer geraden Linie y = mx + n fängt es die x-Achse ab, wenn y=0.

0 = xm + n --> x = -n/m 

Also der x-Abschnitt wird -n/m sein.

Gegeben sind zwei Punkte (x_1,y_1), (x_2,y_2), können Sie die Steigung und den y-Abschnitt wie diese finden:

m = (y_2-y_1)/(x_2-x_1) 
n = -x_1*(y_2-y_1)/(x_2-x_1) + y_1 

Dann wird die x-Schnittpunkt

x_1 - y_1*(x_2-x_1)/(y_2-y_1) 

In JavaScript wird,

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 

enter image description here

0

Ich werde es erklären „Mathematik“ statt Code, vielleicht hilft das zu verstehen, was hinter all das ist:

Die gemeinsame Gleichung für eine gerade Linie ausgedrückt werden könnte, wie: y = kx + d

k ist die Steigung und d ist der y-Schnittpunkt der Linie.

So den x-Schnittpunkt berechnen, müßten Sie:

  1. prüfen, ob es eine gerade Linie (zB wenn die Steigung == 0.). Wenn dies der Fall ist, sind die X-Koordinaten Ihrer 2 gegebenen Punkte gleich. Wenn sie 0 sind, dann ist der x-Schnittpunkt die gesamte Linie. Wenn sie nicht Null sind, gibt es keinen x-Schnittpunkt.
  2. Andernfalls können Sie den y-Wert für das x-intersect erhalten durch y auf Null in der obigen Gleichung, wie diese Einstellung: 0 = k * x + d

Dann gehen wir auf:

0 = k*x + d 
    0 = (-0,5)*x + 5,5 
-5,5 = (-0,5)*x 
    11 = x 

zu finden, dass die x-schneiden sich in