| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TChart |
| Автор: lotax 8.9.2006, 15:32 |
| Привет, всем!!! Вопрос: Есть диаграмма (TChart) (тип: график(Line)) как можно узнать значение оси Y, при пересечении оси X с графиком. |
| Автор: Alexeis 8.9.2006, 15:51 | ||
|
| Автор: lotax 10.9.2006, 14:25 |
| alexeis1 спасибо за ответ, но этот вариант не подходит. Имеется в виду что значение оси Х известное, например X=10, смотрим по графику, где идет пересечение с графиком, надо узнать значение Y (график по определенным координатам уже построен). |
| Автор: Alexeis 10.9.2006, 16:59 | ||
Ну встроеной функции я не нашел, приходит в голову только такое
|
| Автор: lotax 11.9.2006, 09:16 |
| Все верно, только значения могут быть не постоянными, по которым построен график (если укажем x=2, то соответст. y=1.5 ), например X=2.0063 Может есть компоненты, которые дают выше указанные возможности... |
| Автор: Guedda 11.9.2006, 09:18 |
| Тогда тебе лучше не Tchart пользоваться, а на канве рисовать, предварительно высчитывая нужные тебе значения, и помещая их на канву. Моё ИМХО, так быстрее будет. |
| Автор: Alexeis 11.9.2006, 09:30 |
| lotax, В таких делах привязка алгоритма к отображению, не самый лучший способ програмирования. Я обычно все расчеты и интерполяции (линейные, параболические) между точками делаю в алгоритме, а Chart использую, по его назначенью, т.е. по выводу информации, а не по обработке. |
| Автор: Fedia 11.9.2006, 09:40 |
| lotax, находим две точки графика, соответствующие условию: 1. Они следуют одна за другой. 2. Координата X искомой точки находится между значениями X этих точек. Составляем уравнение прямой по этим двум точкам. Подставляем в это уравнение значение X искомой точки и находим Y. Математика, класс 5 или 6-й. |
| Автор: lotax 11.9.2006, 09:41 | ||
Не подскажешь ссылки или примеры как примерно реализовать. С такими вещами не сталкивался... |
| Автор: Alexeis 11.9.2006, 10:19 | ||
Ну вот возьмем реальный фрагмент программы, в которой требуется получение интерполированого значения определенного коэффициента в случае если значения абсцис заданы ввиде равномерной сетки значений
c : array[1..20] of - это значения в точках индекс номер точки. в данном случае для получения индекса точки, по известной абсцисе надо, умножить ее на 20 (такой здесь масштаб), index := Trunc(d * 20); - определяет ближайшую левую тчку. index + 1 это ближайшая правая точка. И просто из уравнения прямой, полученной по 2 точкам (тут уже оно упрощеное), подставляя, значение абсциссы, получаем ординату. Для неравностоящих узлов все сложнее, нужно более сложный алгоритм поиска близлежащих точек, например бинарный поиск. |
| Автор: lotax 11.9.2006, 10:35 |
| Всем спасибо, в особенности alexeis1, буду разбираться... |