Forum Webscript.Ru
Программирование => PHP => Тема начата: PaSol от 23 Мая 2005, 13:34:53
-
есть поле высотой 300 точек и значения максимальное 28, минимальное 27,8. левая верхняя точка поля 110,50, нижняя правая 410,350. Как можно вывести значения в это поле? значения берутся из бд. По длине я знаю как выводить, а вот по высоте значения точек и их место расположения не совпадают, т.е. точка 28 находится не на самом верху, а где-то по центру
-
PaSol
А при чем тут PHP ? Это все делается CSS - ом.
-
График рисуется CSSом? Любопытно. Особенно, скажем, механизм взаимодействия CSS с БД.
2PaSol можно поподробней про график?
-
hanslinger, у меня есть поле, верхняя граница - это значение 28, нижняя граница - 27,2. В бд хранятся значения, допустим, 27,5; 27,9; 27,2. И каждому значению соответствует id. Надо их выводить по порядку id. Т.е. рисую линию от точки (1;27,5) до (2;27,9), потом линиию от (2;27,9) до (3;27,2). Так вот, я не знаю как связать значения по y с координатами поля. Эти значения у меня выводятся выше поля
-
PaSol, если я правильно тебя понял, ответ кроется в самом вопросе. У тебя система координат с осью y растущей вниз
(High y=50, Low y=350). Т.е. тебе всего то нужно вычитать из lowY
твое значение, тогда график должен построиться правильно.
-
sarutobi, но если вычисть из 350 - 28, то 50 я не получу:)
я сделал: свое число X умножаю еще на k=300/28
Спасибо, жаль что сам не додумался
-
хм....все равно что то не так...
27,6*300/28=296
350-296=54
а надо чтобы это значение было по центру, т.е. значение 200
-
рабочий код:
($y)+($max-$4islo[$i])*$m,
где $y=50, $max=28, $4islo - текущее число,
$m=300/($max-$min)
где $min=27,2
-
Универсальная формула линейной трансформации шкалы: есть исходная шкала x, определенная на области [x1,x2]. Нужно преобразовать ее в шкалу y на область [y1,y2], причем x1 должен трасформироваться в y1 (y1 может быть больше или меньше y2). Понятно, что формула будет: y = a*x+b, нужно найти коэффициенты a и b. Записываем следующее выражение:
y = (x-x2)/(x1-x2)*y1 + (x1-x)/(x1-x2)*y2
Очевидно, что когда x=x1 первый член равен y1, а второй нулю. Если x=x2, то наоборот первый член равен нулю, второй y2. После простых преобразований получим:
y = (y1-y2)/(x1-x2)*x + (x1*y2-x2*y1)/(x1-x2)
a = (y1-y2)/(x1-x2)
b = (x1*y2-x2*y1)/(x1-x2)
Этому должны были научить на первом курсе любого технического вуза.
-
так у меня она и получилась:) тока эмпирическим путем