Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как построить график функции в Bc 3.1 под DOS, масштаб графика 
:(
    Опции темы
qwerty
  Дата 1.4.2003, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно построить график функции (сложной, т.е. не элементарной) под DOS.
С центром координат в точке с координатами (X1,Y1). Как это сделать? withstupid.gif
Раньше делал, но сейчас забыл и исход. не осталось.

И еще как масштабировать график функции, а то при значительном изменении аргумента функции само значение функции изменяется очень не значительно(в десятитысячных, при изменении аргумента на единицу).
Разрешение экрана 640х480.

PM MAIL   Вверх
Paradox
Дата 1.4.2003, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Координаты пересчитывать


--------------------
---
PM MAIL WWW   Вверх
DENNN
Дата 1.4.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Вариант Paradox'а наверное оптимальный. Добавлю, что удобно завести матрицу преобразований, по которой функция постоения графика будет рассчитывать координаты пикселов. Тогда для изменения/растяжения/сжатия/поворота изображения достаточно модифицировать эту матрицу.
PM ICQ   Вверх
qwerty
Дата 1.4.2003, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Paradox
Координаты пересчитывать

Это я и так знал. Вопрос как это сделать.

DENNN
Вариант Paradox'а наверное оптимальный. Добавлю, что удобно завести матрицу преобразований, по которой функция постоения графика будет рассчитывать координаты пикселов. Тогда для изменения/растяжения/ сжатия/поворота изображения достаточно модифицировать эту матрицу.

Можно более подробно.
Если можно привести пример кода для какой-нибудь элементарной функции.
PM MAIL   Вверх
DENNN
Дата 1.4.2003, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Цитата
Можно более подробно.

Сначала мат. теория. То что ты хочешь сделать можно назвать как переход от системы координат графика к системе координат дисплея. Наиболее удобно это описывает матрица аффинных преобразований. Матрица эта квадратная, размерность ее зависист от числа используемых координат. Для 3D это обычно 3x3 или 4x4. Во втором варианте точка будет представлена как матричный вектор размерностью 4 строки на один столбец. Так точка (0,0,0) представляется как (0,0,0,1); Чтоб получить координаты этой точки в новой СК необходимо умножить матрицу-вектор на матрицу аффинных преобразований. Такой способ позволяет учесть абсолютно все виды преобразований, даже неперпендикулярность осей координат. Как рассчитать требуемую матрицу поищи сам - благо примеров в инете и литературе по графике навалом. Когда старая и новая СК совпадают "один в один" матрица преобразований выглядит так
1,0,0,0
0,1,0,0
0,0,1,0
0,0,0,1

размерность 4x4 избавляет от некоторых побочных трудностей, связанных с матричной алгеброй.

Почему матрицы? На компьютере данный способ реализуется быстрей всего и при использованиии "на поток" дает наилучшие показатели производительности для обобщенного случая.
PM ICQ   Вверх
DENNN
Дата 1.4.2003, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Навсякий случай, если у тебя 3D график. Аффинными преобразованиями можно выразить только ортографическую проекцию пространства на плоскость, но не перспективную.
PM ICQ   Вверх
qwerty
Дата 2.4.2003, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



DENNN
Да. нет график 2мерный.
Если не сложно бросьте ссылки на материалы по построению графиков 2D функций, а на счет матриц это не шутка?(1апрельская)

Это сообщение отредактировал(а) qwerty - 2.4.2003, 00:59
PM MAIL   Вверх
DENNN
Дата 2.4.2003, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Нет это совершенно серьезно.
PM ICQ   Вверх
AntonSaburov
Дата 2.4.2003, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата
Да. нет график 2мерный.


Для 2D графика делалось очень просто:

1. Находим минимальное и максимальное значение из самой функции по одной координаты - MAXfun и MINfun.
Также известно маскимальный размер на экране - MAXscreen и MINscreen
2. Находим то же самое для другой координаты.

Потом вычисляем коэффициент преобразования каждой координаты
(MAXscreen-MINscreen)/(MAXfun-MINfun)

Теперь просто значение функции по каждой оси умножается на коэффициент - получаем значение в координатах экрана

А афинные преобразования реально интересно применять при сложных случаях - трехмерность, повороты и т.д.
PM MAIL WWW ICQ   Вверх
DENNN
Дата 2.4.2003, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Даже если предоставить пользователю возможность увеличивать часть графика или накладывать один на другой, то аффинные преобразования становятся удобны. Реализовав такой подход один раз его потом можно применять для разных целей не переделывая программу.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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