Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Система координат 
:(
    Опции темы
vinter
Дата 25.4.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



Привет всем!
появилась следующая проблема: нужно сделать систему координат(функцию), которая бы строила график функции по переданным в нее массивам. Проблема в следующем, массивы могут приходить как с очень малыми числами, так и с очень большими(допустим возьмем ф-ию логарифма). ф-ии типа LineTo принимают только целочисленные аргументы, следовательно мне нужно по какому то принципу преобразовать вещщественные числа чтобы не нарушился порядок следования чисел, вопрос как это сделать?


--------------------
Мой блог
PM MAIL WWW   Вверх
anwe
Дата 25.4.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Ну, наверное, через масштаб. Надо определить максимальное значение и должны быть известны размеры части окна, где будет прорисовываться график. Получится масшаб.
Ну, а как вся графика - она дискретна - и реальные результаты надо "подводить" под дискретные значения, которые пойдут в LineTo.
PM MAIL   Вверх
vinter
Дата 26.4.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



Цитата(anwe @  25.4.2007,  21:51 Найти цитируемый пост)
"подводить"

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Oluka
Дата 26.4.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.4.2007
Где: Н.Новгород

Репутация: нет
Всего: нет



Цитата

вот как это сделать, меня как раз и интересует 


ну, можно сделать так:
1) Ты строишь все-равно не весь график, а его часть (чаще всего, за искл случая замкнутой кривой и т.п.), поэтому ты можешь найти макс и мин значения на строящемся участке.
2) Разность между ними/количество пикселей = кол-во единиц измерения/пиксель
3) Попиксельно рисуешь))))  
PM MAIL ICQ Skype   Вверх
S.A.G.
Дата 26.4.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



vinter, а какие данные содержаться в массивах?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
vinter
Дата 26.4.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



Цитата(S.A.G. @  26.4.2007,  12:09 Найти цитируемый пост)
vinter, а какие данные содержаться в массивах?

вещественные числа

Добавлено через 2 минуты и 10 секунд
Цитата(Oluka @  26.4.2007,  11:27 Найти цитируемый пост)
1) Ты строишь все-равно не весь график, а его часть (чаще всего, за искл случая замкнутой кривой и т.п.), поэтому ты можешь найти макс и мин значения на строящемся участке.

я строю весь график, пример выше это просто в качестве примера, строю я совсем другое
Цитата(Oluka @  26.4.2007,  11:27 Найти цитируемый пост)
2) Разность между ними/количество пикселей = кол-во единиц измерения/пиксель

я понимаю, вот только вопрос то стоит в алгоритме преобразования вещественных чисел в целые


--------------------
Мой блог
PM MAIL WWW   Вверх
S.A.G.
Дата 26.4.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Цитата
вещественные числа

Координаты точек графика? Тоесть их придеться линиями потом соединять?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
likehood
Дата 26.4.2007, 13:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



пусть X, Y - координаты точек из входного массива
Xmin - минимальное значение из всех X
Sx, Sy - экранные координаты (целые числа)
Sx max, Sx min - границы экранной области, в которой строится график

Дальше пишем простую пропорцию:
(X-Xmin)/(Sx-Sx min) = (Xmax-Xmin)/(Sx max-Sx min) = 1/Kx
Sx = Sx min + K(X-Xmin)
Sy = So - K(Y-Yo)  // центрируем график по оси Y
здесь K = min{Kx, Ky}, So = (Sy max + Sy min)/2, Yo = (Ymax-Ymin)/2
PM MAIL   Вверх
vinter
Дата 26.4.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



Цитата(S.A.G. @  26.4.2007,  12:45 Найти цитируемый пост)
Координаты точек графика? Тоесть их придеться линиями потом соединять?

да
likehood  , спасибо за инфу
а где мне взять
Цитата(likehood @  26.4.2007,  13:25 Найти цитируемый пост)
K = min{Kx, Ky}




--------------------
Мой блог
PM MAIL WWW   Вверх
likehood
Дата 26.4.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



Сначала считаются коэффициенты Kx и Ky по первой формуле, а затем берется меньший из них.
PM MAIL   Вверх
vinter
Дата 29.4.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



спасибо


--------------------
Мой блог
PM MAIL WWW   Вверх
vinter
Дата 29.4.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



likehood, появилась некоторая проблема, например когда строю график синуса, то получается что верхушки выходят за границы экрана, обрезаются вершины как это поправить
кстати ты тут наверно ошибся?
Цитата(likehood @  26.4.2007,  13:25 Найти цитируемый пост)
Sy = So - K(Y-Yo)  // центрируем график по оси Y

должно быть так?
Sy = So + K(Y-Yo) 


--------------------
Мой блог
PM MAIL WWW   Вверх
vinter
Дата 29.4.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



кхм.. решил проверить на обычной ф-ии x=y , и получил неправильный результат, считал по формулам которые ты сказал..

мой косяк в коде smile
извиняюсь

Добавлено через 14 минут и 40 секунд
ну вот вообщем последний вопрос то у меня и остался, как сжимать/разжимать график

Это сообщение отредактировал(а) vinter - 29.4.2007, 18:04


--------------------
Мой блог
PM MAIL WWW   Вверх
likehood
Дата 29.4.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



Цитата(vinter @  29.4.2007,  18:34 Найти цитируемый пост)
должно быть так?
Sy = So + K(Y-Yo) 

Возможно. Главное чтобы ось Y смотрела вверх, а не вниз.

Цитата(vinter @  29.4.2007,  18:57 Найти цитируемый пост)
ну вот вообщем последний вопрос то у меня и остался, как сжимать/разжимать график

Все тем же коэфициентом K. Если тебе не важны пропорции, для каждой из осей можно использовать свой коэффициент.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.