Форум программистов, компьютерный форум CyberForum.ru

Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функцию булевского типа, проверяющую наличие в файле записи с заданным ключём. http://www.cyberforum.ru/cpp-beginners/thread614844.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 18. Написать функцию булевского типа, проверяющую наличие в файле записи с заданным ключём.
C++ Написать булевскую функцию, проверяющую упорядоченность файла. ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 17. Написать булевскую функцию, проверяющую упорядоченность файла. http://www.cyberforum.ru/cpp-beginners/thread614843.html
C++ Написать функцию целого типа, вычисляющую сумму геометрической прогрессии рекуррентным способом.
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 16. Написать функцию целого типа, вычисляющую сумму геометрической прогрессии рекуррентным способом.
Написать функцию целого типа, вычисляющую сумму арифметической прогрессии рекуррентным способом. C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 14. Написать функцию целого типа, вычисляющую сумму арифметической прогрессии рекуррентным способом.
C++ Написать функцию булевского типа, сортирующую столбцы матрицы по возрастанию. Значение функции «true», если результат отличается от аргумента. http://www.cyberforum.ru/cpp-beginners/thread614840.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 13. Написать функцию булевского типа, сортирующую столбцы матрицы по возрастанию. Значение функции «true», если результат отличается от аргумента.
C++ Написать функцию булевского типа, определяющую наличие в матрице совпадающих элементов. ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 12. Написать функцию булевского типа, определяющую наличие в матрице совпадающих элементов. подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 17:12     Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0)
Если точка расположена относительно прямой образованной двумя точками треугольника расположена в той же полуплоскости, где и оставшаяся точка треугольника для всех пар из двух точек треугольника, то точка принадлежит треугольнику.


Теорема ( Ильин, Ким Линейная алгебра и аналитическая геометрия): Точки http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1}) и http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{2}({x}_{2}, {y}_{2}) при надлежат разным полуплоскостям относительно прямой l: Ax+By+C=0 тогда и только тогда когда http://www.cyberforum.ru/cgi-bin/latex.cgi?(A{x}_{1}+B{y}_{1}+C)(A{x}_{2}+B{y}_{2}+C) < 0

Треугольник (1,1) (0,2) (-1,0)

Выборка двух точек треугольника:
1 случай:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{0}({x}_{0}, {y}_{0})  = (1,1)
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1})  = (0,2)

Прямая по двум точкам строится следующим образом:


http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{vmatrix}x-{x}_{0} & y-{y}_{0} \\ {x}_{1}-{x}_{0}  & {y}_{1}-{y}_{0}\end{vmatrix} = (x-{x}_{0})({y}_{1}-{y}_{0}) - ({x}_{1}-{x}_{0})(y-{y}_{0} ) = x{y}_{1} - x{y}_{0} - {x}_{0}{y}_{1} + {x}_{0}{y}_{0} - y{x}_{1}+{x}_{1}{y}_{0}+y{x}_{0} - {x}_{0}{y}_{0} = x({y}_{1} - {y}_{0}) + y({x}_{0}-{x}_{1}) + {x}_{1}{y}_{0} - {x}_{0}{y}_{1} = 0

x(0-1) + y(1-2)+2*1 -1*0 = 0 http://www.cyberforum.ru/cgi-bin/latex.cgi?\Leftrightarrow -x - y + 2 = 0 http://www.cyberforum.ru/cgi-bin/latex.cgi?\Leftrightarrow x + y -2 =0

http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1}) в данном случае это точка (-1,0)


Предположим задана точка http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{2}({x}_{2}, {y}_{2}) равная -0,2;0,9 которую надо проверить на то принадлежит ли она треугольнику

l: Ax+By+C=0 в данном случае x+y-2 = 0
A = 1 B = 1 C = -2
Проверям условие
http://www.cyberforum.ru/cgi-bin/latex.cgi?(A{x}_{1}+B{y}_{1}+C)(A{x}_{2}+B{y}_{2}+C) < 0

(1*-1 + 1*0-2)(1*(-0,2)+1*0,9 - 2) = (-3)(-1,3) > 0 что означает, что точки находятся в одной плоуплоскости относительно прямой l, а это прямая образованная двумя точками треугольника взятыми по условию
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{0}({x}_{0}, {y}_{0})  = (1,1)
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1})  = (0,2)


2 случай
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{0}({x}_{0}, {y}_{0})  = (1,1)
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1})  = (-1,0)

l: Ax+By+C=0 в данном случае x-2y+1= 0

Проделав операции аналогичные предыдущему случаю, получим что >0 то есть точки находятся в одной полуплоскости.

3 случай

http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{0}({x}_{0}, {y}_{0})  = (0,2)
http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1}({x}_{1}, {y}_{1})  = (-1,0)

l: Ax+By+C=0 в данном случае 2x-y+2= 0

Проделав операции аналогичные предыдущему случаю, получим что >0 то есть точки находятся в одной полуплоскости.

Получили что во всех трех случаях точки находятся в одной полупрлоскости, значит точка -0,2;0,9 принадлежит треугольнику
 
Текущее время: 09:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru