Программа, для определения принадлежности заданной точки к заштрихованной области. - Вопросы по CMS
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Программа, для определения принадлежности заданной точки к заштрихованной области.

Регистрация
31 Мар 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Необходима программа, которая будет получать введенную координату (x и y ) и сравнивать эту координату с координатами заштрихованной области фигуры и на основании этого делать вывод о принадлежности/не принадлежности точки к заштрихованной области.
//otvet.imgsmail.ru/download/50165359_7be7940a2ef4bebc0aba4d529d5a09ed_800.jpg
 
Регистрация
2 Окт 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Первый же результат гугла: class Program { static void Main(string[] args) { int[] x = new int[4]; int[] y = new int[4]; for (int i = 0; i < 4; ++i) { Console.Write("Введите (x" + i.ToString() + ",y" + i.ToString() + "): "); x = Console.Read(); y = Console.Read(); Console.ReadLine(); } int a = (x[1] - x[0]) * (y[2] - y[1]) - (x[2] - x[1]) * (y[1] - y[0]); int b = (x[2] - x[0]) * (y[3] - y[2]) - (x[3] - x[2]) * (y[2] - y[0]); int c = (x[3] - x[0]) * (y[1] - y[3]) - (x[1] - x[3]) * (y[3] - y[0]); if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) { Console.WriteLine("Принадлежит треугольнику"); } else { Console.WriteLine("Не принадлежит треугольнике"); } Console.ReadKey(); }
 
Регистрация
5 Окт 2013
Сообщения
72
Репутация
0
Спасибо
0
Монет
0
Мой вариант такой: Определяешь углы наклона всех трёх сторон треугольника к горизонтальной оси. Считаешь точки пересечения прямых, содержащих эти стороны, с горизонтальной осью. Затем из этих трёх точек пересечения проводишь прямую через заданную точку (x; y) и смотришь, чтобы от левой стороны угол был меньше, от правой — больше (угол считаем от направления оси вправо, у правой стороны угол тупой), от нижней стороны угол должен быть меньше. Угол наклона — это арктангенс отношения y/x, где x и y это разность координат верхней точки стороны и нижней. То есть они иногда могут становиться отрицательными, если верхняя точка левее нижней.
 

Похожие темы

Сверху Снизу