![]() |
|
Модераторы: bsa |
![]()
|
|
| Pro100MoNEy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.11.2010 Репутация: нет Всего: нет |
Мне нужно сделать курсовую, в ней нужно выводить графики(а также поверхности и фигуры) функций введя уравнение, если это фигура или поверхность то нужно их крутить , делать срез и тд.
У меня есть такие вопросы 1)Нужно из уравнения считать точки, и чтобы это сделать надо уравнение преобразовывать чтобы считать множество точек, не хочеться делать ввод уравнения, так что вводишь коэфициэнт и степень для каждого отдельно, хочеться вводить уравнение строкой, как это реализовать, и как считать точки 2) Если фигура обьемная нужен свет, иначе этого неувидеть, как залить градиентом фигуру построеную из массива точек, насколько я понимаю нужно строить фигуру из полигонов, как их получить из множества точек? И препод сказал пользоваться только средствами win32api, никаких openGL, мфс и пр.=( |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
1. Довольно нетривиальная задача для новичка. Но решить можно. Легче это сделать на С++ (с использованием классов и полиморфизма), но можно и на С. Для этого нужно написать парсер строки и набор звеньев: сложение, вычитание, умножение, деление, возведение в степень... парсер должен выстроить на основе введенной формулы дерево звеньев, у которого на самом верху (т.е. листьями) будут аргументы функции.
2. свет не нужен. ты про векторную графику слышал? В свое время даже игры были исключительно в векторе и без заливки (Elite на ZX Spectrum). Строишь линиями z(x) при y=const, затем z(y) при x=const. В итоге у тебя получается фигура из сетки. |
|||
|
||||
| Pro100MoNEy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.11.2010 Репутация: нет Всего: нет |
Если листья это аргументы тогда что являеться корнем?
Корень это ответ всего выражения? А как быть если неизвестное на 3 уровне дерева а не корень? (Ведь если я правильно понимаю нужно 2 переменным дать значение и вычислить третью, но тогда нужно преобразовать уравнение, т.е перенести неизвестные в одну известные на другую сторону а если выражение вида (z^2+y)^1/2+x-y=0 то довольно трудно выразить y) Про векторную графику спасибо, а грани невидимые при таком построении будут видны так? А разве полигон не геометрический примитив? и если строить сеткой всеравно нужно залить градиентом чтобы был эффект обьемности, иначе сфера станет окружностью. Или я чтото непонял? Это сообщение отредактировал(а) Pro100MoNEy - 7.11.2010, 12:09 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
конечно
Подобные вещи можно решить только через итерации, если не прибегать к тяжелой артиллерии, типа Mathematica... Но это ооочень долго. Так что делай "хардкодинг". если не использовать алгоритмы их отсечения, то да. да. Обычно, используют треугольники...
|
|||
|
||||
| Pro100MoNEy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.11.2010 Репутация: нет Всего: нет |
Не заморачиваться на таких уравнениях? сделать как получиться?) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Pro100MoNEy, не "не заморачиваться на уравнениях", а не заморачиваться на их разборе в рантайме. Так как довольно сложно запрограммировать тот же шар. Как ты компу объяснишь, что при одних и тех же параметрах функция имеет несколько результатов?
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |