Автор Тема: график  (Прочитано 4867 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« : 23 Мая 2005, 13:34:53 »
есть поле высотой 300 точек и значения максимальное 28, минимальное 27,8. левая верхняя точка поля 110,50, нижняя правая 410,350. Как можно вывести значения в это поле? значения берутся из бд. По длине я знаю как выводить, а вот по высоте значения точек и их место расположения не совпадают, т.е. точка 28 находится не на самом верху, а где-то по центру

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
график
« Ответ #1 : 24 Мая 2005, 08:05:17 »
PaSol
А при чем тут PHP ? Это все делается CSS - ом.
[off]Безработный[/off]

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
график
« Ответ #2 : 24 Мая 2005, 09:10:34 »
График рисуется CSSом? Любопытно. Особенно, скажем, механизм взаимодействия CSS с БД.
2PaSol можно поподробней про график?

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« Ответ #3 : 24 Мая 2005, 17:27:46 »
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 с координатами поля. Эти значения у меня выводятся выше поля

Оффлайн sarutobi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 61
  • +0/-0
  • 0
    • Просмотр профиля
график
« Ответ #4 : 24 Мая 2005, 19:35:54 »
PaSol, если я правильно тебя понял, ответ кроется в самом вопросе. У тебя система координат с осью y растущей вниз
(High y=50, Low y=350). Т.е. тебе всего то нужно вычитать из lowY
твое значение, тогда график должен построиться правильно.

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« Ответ #5 : 25 Мая 2005, 09:37:19 »
sarutobi, но если вычисть из 350 - 28, то 50 я не получу:)

я сделал: свое число X умножаю еще на k=300/28

Спасибо, жаль что сам не додумался

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« Ответ #6 : 25 Мая 2005, 09:50:18 »
хм....все равно что то не так...
27,6*300/28=296
350-296=54

а надо чтобы это значение было по центру, т.е. значение 200

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« Ответ #7 : 25 Мая 2005, 13:59:30 »
рабочий код:

($y)+($max-$4islo[$i])*$m,

где $y=50, $max=28, $4islo - текущее число,
$m=300/($max-$min)
где $min=27,2

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
график
« Ответ #8 : 25 Мая 2005, 16:06:32 »
Универсальная формула линейной трансформации шкалы: есть исходная шкала 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)

Этому должны были научить на первом курсе любого технического вуза.

Оффлайн PaSol

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
график
« Ответ #9 : 26 Мая 2005, 15:26:04 »
так у меня она и получилась:) тока эмпирическим путем
« Последнее редактирование: 26 Мая 2005, 15:32:51 от PaSol »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28