2017-08-02 34 views
2

考慮兩點點:函數來獲取在線在兩個點已知

const point1 = {x: 100, y: 0.95} 
const point2 = {x: 75, y: 1.05} 

我需要知道y的值當x等於一些任意值。

請假設存在線性關係。

例如,x是80時是什麼? x是70時是什麼?

是否有我可以使用的功能?

目前我一直對數學解釋感到困惑,理想情況下會喜歡JavaScript或jQuery函數,當給定任意x值時返回y值。

+0

類似於: - {75,1.05},{50,1.15},{25,1.25} {0,1.35} {90,0.99} –

+0

所有答案都是正確的,所以對每個人都+1。以及問題到 –

回答

2

當然,一行的gradient是量y增加每單元x增加。例如。如果y上升5,每2個x上升,則該線被稱爲具有2.5的梯度。

梯度可以從2點來計算,如下所示:

var gradient = (point2.y - point1.y)/(point2.x - point1.x); 

的線的截距是y值它穿過y軸線。它可以從像這樣1個點來計算:然後

var intercept = point1.y - (gradient * point1.x); 

可以計算出任何xy值:

var x = 10; 
var y = gradient * x + intercept; 

結合了這些東西的函數可能看起來像:

function yFromX(point1, point2, x) { 
    var gradient = (point2.y - point1.y)/(point2.x - point1.x); 
    var intercept = point1.y - (gradient * point1.x); 
    return gradient * x + intercept; 
} 
+0

感謝您的好答案+1,但是您的代碼中存在拼寫錯誤...您有... point1.y = x ...應該是... point1.x ...非常明確的代碼,很好的使用變量名...許多thx ... PS如果你解決這個問題,我會接受這個答案 – danday74

+0

謝謝你指出,糾正 –

2
const point1 = {x: 100, y: 0.95} 
const point2 = {x: 75, y: 1.05} 

function getY (x) { 
    var gradient = (point1.y - point2.y)/(point1.x - point2.x); 
    return point1.y + gradient * (x - point1.x); 
} 

alert(getY(90)); 
2

使用給定的兩個點計算m(梯度)和c(偏移),然後使用這些點計算任意x的y。

const point1 = {x: 100, y: 0.95} 
 
const point2 = {x: 75, y: 1.05} 
 

 
var m = (point1.y - point2.y)/(point1.x - point2.x); // gradient formula 
 
var c = point1.y - m*point1.x;  // offset formula 
 

 
function findY(x){ 
 
    return m*x + c; 
 
} 
 

 
console.log(findY(80)); 
 
console.log(findY(70));

相關問題