Показать сообщение отдельно
Старый 02.06.2012, 16:48   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Juliet Посмотреть сообщение
А можно хотя бы вкратце пояснить, что в каком действии выполняется? я запуталась совсем)
Можно. Как я понимаю, только в приведенном фрагменте? Ну пожалуйста.
Прежде всего, на чем основан алгоритм? А вот: соединим, как показано на рисунке в сообщении #2, проблемную точку (обозначим ее т.0) со всеми тремя вершинами треугольника. Теперь если т.0 находится внутри треугольника, то сумма углов с вершиной в т.0 составит 360°, если же вне - то меньше. Вот это и проверяется. Углы ищем по теореме косинусов. Но для этого нужно иметь функцию арккосинус, в списке стандартных функций Паскаля отсутствующую.
Function ArcCos(z:real):Real; восполняет этот пробел.
Проверять условие равенства суммы углов 360° удобнее, если углы выражены в градусах, а не в радианах. Перевод из радианов в градусы осуществляет функция
Function RadGr(t:real):Real;
Функция
Function Angle(d1,d2,d3:real)Real;
решает задачу нахождения значения угла между сторонами треугольника d1 и d2 по значению этих сторон, а также третьей d3, по теореме косинусов.
И, наконец, о процедуре
Procedure Search_MinMax(v1,v2,v3,v4:real; var Vmin:real; var Vmax:real);
Смысл ее прост: из четырех чисел она находит наименьшее и наибольшее. Нужна она исключительно для оптимального размещения треугольника и точки т.0 на графическом экране, так, чтобы всё это во-первых, поместилось, а во-вторых, чтобы изображение не было мелким, смещенным в сторону и т.п., для чего и надо из координат трех вершин треугольника и точки т.0 найти наибольшую и наименьшую горизонтальные и вертикальные координаты, и уже исходя из них поставить "рамки" и определить масштабный коэффициент для построения изображения.

Вот как-то так. Если еще вопросы появятся, задавайте.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070