Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 02:39   #1
Fortjkee
Новичок
Джуниор
 
Регистрация: 28.12.2013
Сообщений: 1
По умолчанию MathCAD. Решить задачу с использованием программного модуля.

Здравствуйте.

Сама задача:Построить два треугольника с вершинами в заданном множестве точек на плоскости так, чтобы первый треугольник лежал строго внутри второго.
Не получается решить, из-за того, что туго идёт с геометрией как таковой.

Примерные задумки: использование уравнения y=ax+b.

Буду признателен за любую помощь, пусть даже незначительную.
Fortjkee вне форума Ответить с цитированием
Старый 14.01.2014, 09:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не знаю MathCAD, поэтому не знаю, каким образом он должен быть задействован.

но, что касается геометрии.
То вам достаточно знать:
- условие, при котором по трём точкам можно построить треугольник (имхо, самый простой способ, по теореме Пифагора найти расстояния между точками и воспользоваться правилом, что любая сторона треугольника должна быть строго меньше суммы длин двух других сторон);

- попадает ли точка в треугольник (я бы воспользовался ссылочкой, которую любезно предоставил BDA тут, либо банально погуглил)

- цикл перебора точек (брать по три разные точки из заданного множества).

всё. Этого полностью достаточно, чтобы решить задачу.
Берём три точки, которые могут являться вершинами треугольника. Далее перебираем все точки, которые попали внутрь данного треугольника, выбирая из них по три. Если на них можно построить треугольник, то он будет лежать внутри первого (раз все вершины лежат внутри треугольника, то и построенный на этих точках треугольник будет лежать внутри треугольника.)
Если нет таких точек - то берём другие три точки для первого треугольника.
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2014, 11:27   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
поэтому не знаю, каким образом он должен быть задействован.
Для проведения расчетов, в записи приближенной к естественной, математической.
Цитата:
Далее перебираем все точки, которые попали внутрь данного треугольника,
Там циклы считаются долго.
Я бы на первом приближении рассматривал квадрат (или даже прямоугольник) в который вписан данный треугольник. Таким образом получал бы модель из 4-х треугольников (в общем случае, в частном возможно меньше). Причем 3 треугольника будут иметь прямые углы, поскольку это будут углы квадрата. Причем 2 стороны этих треугольников всегда будут параллельны осям координат, так будут являться сторонами (или частями сторон) квадрата. Дальше определить нужные координаты будет проще. Ну наверно рандомом внутри квадрата, с учетом описанных выше ограничений. Все равно быстрей, чем перебирать точки всей плоскости.

Вариант 2. Использовать операции масштабирования. То есть построить внутри такой же треугольник, только меньшего размера. В принципе также можно задействовать прямоугольники и через них выводить координаты точек углов второго треугольника согласно пропорций.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 14.01.2014 в 11:41.
Utkin вне форума Ответить с цитированием
Старый 14.01.2014, 11:49   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Utkin, всё это, конечно, хорошо, но, имхо, первый вариант может не дать ответа в частных случаях (ведь точки, которые нам заданы могут не образовывать прямоугольные треугольники), а второй вариант - вообще не понятно, как нам может помочь масштабирование найти точки СРЕДИ ЗАДАННЫХ....



впрочем, я высказываю личное мнение, абсолютно субъективное... извините, если что...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2014, 11:53   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
ведь точки, которые нам заданы могут не образовывать прямоугольные треугольники
Не могут. Прямоугольник строить так, чтобы один угол треугольника всегда совпадал с одним углом прямоугольника. В результате углы всегда должны лежать на сторонах прямоугольника.
Цитата:
СРЕДИ ЗАДАННЫХ....
Тогда требуется уточнение. Я так понял заданные точки это сама плоскость, на которой валяется какой-то треугольник. И идея создать внутри точ такой же только поменьше.
Цитата:
впрочем, я высказываю личное мнение, абсолютно субъективное... извините, если что...
Ничего страшного, я тоже строю рабочую гипотезу.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить задачу с использованием подпрограмм функции (ПАСКАЛЬ) Вероника_94 Помощь студентам 7 13.06.2012 22:49
Разработка программного модуля Lidiya585 Фриланс 12 13.11.2011 15:48
Решить задачу в Паскале с использованием вложенных циклов Юююлия Помощь студентам 5 20.10.2011 10:47
Помогите решить задачу на Паскале с использованием подпрограмм. Evgo Помощь студентам 12 20.06.2009 20:42