Другие языки программирования и технологии

народ как смещать начало координат при рисовании графика в delphi, компонент paintbox...

хотелось бы чтобы в тот момент когда график доходит до края области, происходило смещение начала координат и т.о. мы бы всегда видели построение графика
Доброго времени суток.

Давайте расскажу принцип рисования графика. допустим, имеется набор значений в диапазоне аргументов (xMin..xMax) и функций, соответственно, (yMin..yMax), во-первых. И, во-вторых, область рисования имеет вид прямоугольника с координатами x1,y1,x2,y2

Сначала требуется определить сколько пикселей приходится на единицу аргумента и функции, т. е. найти "масштабные" коэффициенты.

xRel := (x2 - x1)/(xMax - xMin);
yRel := (y2 - y1)/(yMax - yMin);

А теперь можно показать любое значение, попадающее в диапазон аргументов и функций, вычислив координаты пиксела

x := Round((Arg - xMin) * xRel);
y := Round((-Func + yMax) * yRel);

Разница со знаками обусловлена тем, что координаты экрана для аргумента увеличивается слева на право, а для функции сверху вниз. Нам же хочется "нормальное" представление значения функции - что больше, то выше

Отсюда вы можете перейти к решению своей задачи. Вариантов несколько.

1. Текущее значение Arg приближается к xMax. Вы можете добавить к xMin, xMax константу, сдвинув тем самым график влево. При этом он скроется за левой границей пайнтбокса и рисование продолжится. Будет чем-то напоминать отображение пульса на медицинских приборах.

2. При приближении текущего значения аргумента к xMax, вы начинаете пересчитывать масштабные коэффициенты в соответствии с новым значением xMax. График при этом будет отображаться весь, но как бы "сжиматься" по оси Х

3. При приближении текущего значения аргумента к (xMax - xMin) / 2 вы осуществляете действия п. 1 При этом график будет рисоваться в ценре пайнтбокса, уходя за левую границу.

Судя по вашим словам, первый вариант вас должен устроить.

Удачи!
Ruslan Jabaev
Ruslan Jabaev
59 612
Лучший ответ