Математика. Точка в ломаной фигуре

Статус
В этой теме нельзя размещать новые ответы.

vanderv

Старатель
Регистрация
30 Май 2009
Сообщения
270
Реакции
12
Есть фигура, которая состоит из точек (x,y). Надо узнать, находится ли данная точка в этой фигуре. Может есть формула вычисления?
 
х у - это прямая.
Фигура не может состоять из 2 точек
 
х у - это прямая.
Фигура не может состоять из 2 точек
x,y это точка а не прямая. Я дал понять, что это двухмерное измерение.
Специально для тебя - есть фигура (x1,y1; x2,y2; .... xn,yn)
 
Нашел формулу на c++
Блин как только перевести это в php?
Кому не сложно, с меня wmr
Код:
template bool pt_in_polygon2(const T &test,const std::vector &polygon)
{
 
static const int q_patt[2][2]= { {0,1}, {3,2} };
 
if (polygon.size()<3) return false;
 
std::vector::const_iterator end=polygon.end();
T pred_pt=polygon.back();
pred_pt.x-=test.x;
pred_pt.y-=test.y;
 
int pred_q=q_patt[pred_pt.y<0][pred_pt.x<0];
 
int w=0;
 
for(std::vector::const_iterator iter=polygon.begin();iter!=end;++iter)
{
T cur_pt = *iter;
 
cur_pt.x-=test.x;
cur_pt.y-=test.y;
 
int q=q_patt[cur_pt.y<0][cur_pt.x<0];
 
switch (q-pred_q)
{
case -3:++w;break;
case 3:--w;break;
case -2:if(pred_pt.x*cur_pt.y>=pred_pt.y*cur_pt.x) ++w;break;
case 2:if(!(pred_pt.x*cur_pt.y>=pred_pt.y*cur_pt.x)) --w;break;
}
 
pred_pt = cur_pt;
pred_q = q;
 
}
 
return w!=0;
 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху