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

Попадание точки в треугольник - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
HellKnight
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
24.02.2011, 01:09     Попадание точки в треугольник #1
Есть полигон, представляющий из себя треугольник на основе прямоугольника, т.е. вершины треугольника - левый нижний и правый нижний углы прямоугольника и середина его верхней стороны.
Какой алгоритм попроще можно для этого использовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 01:09     Попадание точки в треугольник
Посмотрите здесь:

C++ Попадание точки в области
C++ Попадание точки в обалсть
Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (2,1) (3,0) (-1,0) C++
C++ Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0)
C++ Попадание точки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
24.02.2011, 01:40     Попадание точки в треугольник #2
А на чем пишем: С , С++ или CLI ?
HellKnight
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
24.02.2011, 01:42  [ТС]     Попадание точки в треугольник #3
C++, конкретно Qt
IrineK
Заблокирован
24.02.2011, 02:14     Попадание точки в треугольник #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
 
void triAreaGener(int X1,int Y1, int X2, int Y2, int X, int Y)
{
    if(Y>2*(Y1-Y2)*(X-X1)/(X2-X1)+Y2 && Y>2*(Y1-Y2)*(X-X2)/(X1-X2)+Y2 && Y<Y2)
        cout<<"Попал"<<endl;
    else
        cout<<"Мимо"<<endl;
}
 
 
int main()
{
    setlocale(LC_ALL,"");
    int x1,y1,x2,y2,x3,y3;
 
    cout<<"Введите координаты верхней левой точки прямоугольника: ";
    cin>>x1>>y1;
    cout<<"Введите координаты нижней правой точки прямоугольника: ";
    cin>>x2>>y2;
    cout<<"Введите координаты точки попадания: ";
    cin>>x3>>y3;
 
    triAreaGener(x1,y1,x2,y2,x3,y3);
    
    return 0;
}
Имеется в виду, что координаты вводятся в пикселях.
Направление осей обычное для экрана: по Х слева направо, по У сверху вниз.
HellKnight
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
24.02.2011, 03:03  [ТС]     Попадание точки в треугольник #5
Вроде бы работает! Спасибо огромное!
Осталось только разобраться в этом
if(Y>2*(Y1-Y2)*(X-X1)/(X2-X1)+Y2 && Y>2*(Y1-Y2)*(X-X2)/(X1-X2)+Y2 && Y<Y2)
Придется вспомнить школьный курс геометрии.
IrineK
Заблокирован
24.02.2011, 03:36     Попадание точки в треугольник #6
Небольшая иллюстрация:
Миниатюры
Попадание точки в треугольник  
Yandex
Объявления
24.02.2011, 03:36     Попадание точки в треугольник
Ответ Создать тему
Опции темы

Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru