Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Pascal
Показать сообщение отдельно

Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Пишешь цикл от 1 до трех, решаешь три системы уравнений, в каждой из которой находишь точку пересечения луча со стороной треугольника. проверяешь, лежит ли точка пересечения между концами отрезка (в смысле, между концами стороны треугольника), если лежит, то увеличиваешь счетчик пересечений на 1. Вот, собственно, и всё. Если честно, то вопрос этот очень далеко выходит за рамки программирования на паскале. Он много ближе к курсу геометрии класс этак за 8-9-й. Тем не менее, да простят меня за оффтопик, попробую вспомнить.
уравнение прямой такое: y=ax+b.
что бы найти a и b (только что на трубе они и не сидели) для сторон отрезка делаешь так:
a = (yк-ун)/(xк-xн)
b = ук-axк = yн-axн
(н - начало отрезка, к - конец)
уравнение луча ты задавал сам, так что a и b тебе известны.
Как очень тонко подметил hasherfrog, для удобства лучше выбирать вертикальный луч. Тогда уравнение прямой, описывающей луч будет выглядеть так (блин, хочется всё бросить и послать тебя к учебнику геометрии... или алгебры, я уж даже и не помню), для вертикальной прямой: a=0, и соответственно, уравнение принимает вид y = b
Далее решаешь систему:
1: у = a(отрезка)*x + b(отезка)
2: y = b(луча)
полученные x и y - и есть точка пересечения.
Вы уж меня извините, многоуважаемый mavludov, но объяснять, как проверить, лежит ли точка пересечения между концами отрезка (а так же лежит ли она выше точки, из которой мы отправляли вышеуказанный луч) я не стану. Эдак мы и до букваря доберёмся.
Всего наилучшего!


[s]Исправлено: Oaxa, 19:09 25-10-2004[/s]

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 19:08, 25-10-2004 | #6

Название темы: Pascal