Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 3 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 05.01.2004
Откуда: Москва
Ребят, очень нужна помощь!
Нас в универе учать програмироавать на OpenGL, чпсто возникаю вопросы принадлежности точки какойто двумерной фигуре, скажем принадлежность точкии прямоугольнику, что элементарно или кругу, элиппсу!

Вот, а сейчас нужно определить принадлежность точки треугольнику...
Как это математически описать?



Партнер
 

Member
Статус: Не в сети
Регистрация: 02.05.2004
Откуда: Tver
http://www.blackpawn.com/texts/pointinpoly/default.html
Код:
function SameSide(p1,p2, a,b)
    cp1 = CrossProduct(b-a, p1-a)
    cp2 = CrossProduct(b-a, p2-a)
    if DotProduct(cp1, cp2) >= 0 then return true
    else return false

function PointInTriangle(p, a,b,c)
    if SameSide(p,a, b,c) and SameSide(p,b, a,c)
        and SameSide(p,c, a,b) then return true
    else return false



А вообще то google рулит. Не тот вопрос чтоб в форумах спрашивать.


 

Member
Статус: Не в сети
Регистрация: 05.01.2004
Откуда: Москва
Действительно, воспользовался гуглом и нашел довольно изящное решение!

Код:
void myMouse(int button, int state, int x, int y)
{
   int sb;
   int s1, s2, s3;
   int x1=100, y1=100, x2=130, y2=220, x3=200, y3=60;
   
   y=480-y;

   sb=fabs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2);
   s1=fabs((x1*(y2-y)+x2*(y-y1)+x*(y1-y2))/2);
   s2=fabs((x2*(y3-y)+x3*(y-y2)+x*(y2-y3))/2);
   s3=fabs((x3*(y1-y)+x1*(y-y3)+x*(y3-y1))/2);
   
   if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN && sb==(s1+s2+s3))
      kvadrat(x2,y2);
   if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN && sb!=(s1+s2+s3))
      myDisplay();
}


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 3 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan