![]() |
|
Модераторы: bsa |
![]()
|
|
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
Здравствуйте!Создаю проект в MFC AppWizard(exe).
Делаю программу, которая должна строить график функции с осями координат по заданным во внешнем файле точкам. В программе должен быть предусмотрен выбор файла в каталоге. Также рассчитать площадь фигуры, ограниченной полученным графиком и осью ОХ. Из файла программа считывает нормально,выводит данные в LIstBox, затем рисует. Однако вопрос такой: как найти площадь фигуры? У нас ведь получается,что весь график состоит из отрезков,построенных по точкам,другими словами графиком является полилиния. Как же задать тогда функцию для нахождения интеграла? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
keeper1, не надо находить интеграл. достаточно разбить твою фигуру на треугольники и посчитать суммарную их площадь.
|
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Зачем тебе интеграл?
Нужно найти сумму таких многоугольников: 2 вершины на оси х, 2 вершины в точках точки p1 и p2 - можно упростить до (если p2.x>p1.x) S=(p2.x-p1.x)*abs((p2.y-p1.y)/2) Надеюсь я понятно написал |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Какое отношение MFC имеет к вопросу? Не надо вводить окружающих в заблуждение.
Кстати, на будущее, MFC далеко не лучший выбор для написания GUI. Рекомендую обратить внимание на Qt. |
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
bsa я и не ввожу.Задание написать именно там.
casey, то есть если у меня все числа в массиве, то как это будет выглядеть? сумма многоугольников,где каждый многоугольник вот такой? S=(x[i+2]-x[i])*abs((x[i+3]-x[i+1])/2) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
keeper1, не важно с использованием какого инструментария писать. Судя по вопросу, тебе нужен алгоритм.
1. В массиве больше 2-х точек? 2. Берешь из массива 3 первых точки, кладешь в массив треугольников. 3. убираешь из массива вторую точку 4. начинаешь с п. 1. 5. идешь по массиву треугольников и считаешь площадь (как положено: высота умножить сторону делить на 2). |
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
bsa,
а зачем убирать вторую точку? и ты имеешь ввиду точку как (х;у) или как? Массив динамический, в файле который я создал всего 6 точек |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
да забыл. мой алгоритм работает только для выпуклых фигур. Если фигура впуклая, то можно воспользоваться методом заливки областей.
keeper1, нарисуй шестиугольник и дели на треугольники моим способом. Увидишь зачем. |
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
У меня же не фигура,а полилиния.
В методе трапеций,к примеру,мы делим график на равные промежутки. А у меня в файле значения точек произвольные. Или ты предлагаешь так делать на каждом отрезке? |
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Наверное, если у тебя все в куче лежит, типа [х1,у1,х2,у2,х3,у3]
Если я правильно понял то что тебе нужно (в чем я не уверен):
|
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
Правильно понял,именно так у меня все и лежит.
Спасибо! То что ты мне написал,то етсь в ответе мне просто вывести S? И это будет ответ,так ведь? |
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Ну да, это будет площадь фигуры ограниченная осью Х снизу и отрезками ((0;0)(1;1)) и ((1;1)(2;2)) сверху
|
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
Ага!Теперь понятно!Спасбо большое!
А может быть еще подскажешь,как нарисовать координатные оси для моего графика? Вот так рисую сам график:
Рисует норм,просто нужно добавить координатные оси...Не знаешь? |
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Я не знаю размеров твоей области для рисования, ничего сложного в этом нет.
MoveTo -- переместиться в точку. LineTo-рисовать из точки в которой есть "курсор" до указанных координат Только в винде начало координат в левом верхнем углу, т.е. х растет вниз |
|||
|
||||
| keeper1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.11.2010 Репутация: нет Всего: нет |
Это я все знаю,так и делаю.И работает это нормально!
Просто не знаю как именно графически добавить оси |
|||
|
||||
![]()
|
| Правила форума "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. |