Это простая проблема масштабирования.И все простые задачи масштабирования являются просто проявлениями прямой линии в декартовой геометрии:
У вас есть линия:
| /
1 + -/,
| / ,
____,__|/__,____
-4.5 /| 4.5
,/ |
/- + -1
/ |
на этой линии, когда x = 4.5, y = 1 и когдах = -4,5, у = -1.Теперь я уверен, что как только вы поймете это, вы узнаете решение.y=mx + c
.Поскольку прямая симметрична как на положительной, так и на отрицательной сторонах, можно предположить, что она пересекается в нуле, поэтому c=0
.Теперь, чтобы найти наклон:
m = dy/dx
m = (1 - -1)/(4.5 - -4.5)
m = 2/9
, поэтому:
y = 2/9 x + 0
y = 2x / 9
Итак, теперь вы можете подключить это. Что такое y, когда x = 3?:
y = 2*3 / 9
y = 6/9
y = 2/3
и что такое y, когда x = 4?:
y = 2*4 / 9
y = 8/9
дополнительные примечания:
Предположим, что линия пересекает-Нет, что я делаю, потому что мой опытный глаз говорит мне, что это правильно.Но если бы я делал это для экзамена по математике в средней школе, я бы, вероятно, потерял кредиты (даже если мой ответ правильный).Для правильного формульного решения *1025*, чтобы найти c
, сначала нужно найти m
, а затем подставить x
и y
значения известной координаты:
y = 2/9 x + c
учитывая, что (4.5,1) и (-4,5, -1) являются известными координатами, замените x и y на 4.5 и 1:
1 = 2*4.5/9 + c
1 = 9/9 + c
1 = 1 + c
c = 1 - 1
c = 0
Все это может быть зафиксировано в функции масштабирования:
// example code in javascript:
function makeScaler (x1, y1, x2, y2) {
var m = (x2-x1)/(y2-y1);
var c = y1 - m*x1;
// return a scaling function:
return function (x) {
return m*x + c;
}
}
var f = makeScaler(-4.5,-1,4.5,1);
alert(f(4)); // what y is when x is 4
// or if you prefer:
var g = makeScaler(-4.5,0,4.5,1); // scale from 0 to 1
alert(g(4));