Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 70
от 22.06.2005, 13:50

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 1


Вопрос № 22289: Здравствуйте, уважаемые эксперты! Помогите решить "ЭТО" на Turbo Bascal. Заранее спасибо!...

Вопрос № 22.289
Здравствуйте, уважаемые эксперты!
Помогите решить "ЭТО" на Turbo Bascal.
Заранее спасибо!

Приложение:

Отправлен: 17.06.2005, 13:41
Вопрос задал: ab5ent (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Ayl
Здравствуйте, ab5ent!

Ну и в чем проблема?
Определить, находится ли точка внутри треугольника, можно несколькими способами (везде треугольник будет обозначаться ABC, проверяемая точка - M):

1. Площадь треугольника ABC равна сумме площадей треугольников ABM, ACM и BCM. Решение строго математическое, но для компа, ИМХО, не годится, т.к. возможны проблемы с округлением. Простая формула для определения площади треугольника по координатам вершин выглядит так: S = 1/2 * [a, b], где a и b - вектора смежных сторон из общей точки, [a, b] - векторное произведение векторов a и b. Для треугольника ABC с координатами ((Xa, Ya), (Xb, Yb), (Xc, Yc)) площадь определяется так: S = 0.5 * ((Xb-Xa)*(Yc-Ya) - (Xc-Xa)*(Yb-Ya)).

2. Для точки M внутри треугольника ABC сумма углов при вершине M треугольников ABM, ACM и BCM равна 360 градусов (2*пи). Косинус угла определяется как скалярное произведение векторов, исходящих из этой точки, разделенное на произведение длин этих векторов. Способ не очень хороший, т.к. помимо округлений требует большого количества вычислений.

3. Функция Classify в приложении определяет положение заданной точки относительно заданного отрезка (вектора). Вектор разделяет плоскость на 7 непересекающихся областей (см. http://www.kamlit.ru/docs/aloritms/algolist.manual.ru/maths/geom/datastruct.php.htm), и данная функция сообщает, какой из этих областей принадлежит точка.
Функция основана на свойствах векторного произведения векторов.

Используя данную функцию можно определить принадлежность точки треугольнику с помощью 3-х проверок (см. функцию PointInTriangle в приложении).

Третий фрагмент кода в приложении - каркас твоей программы.

Приложение:

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени

Ответ отправил: Ayl (статус: Профессор)
Отправлен: 17.06.2005, 16:27
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться
Вспомнить пароль

В избранное