[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Либо я, либо математика...
GameWorkerДата: Вторник, 03 Февраля 2009, 21:00 | Сообщение # 1
Врубающийся
Группа: Пользователи
Сообщений: 43
Награды: 0
Замечания: 0%
Статус:

Команда: Нема:-(
Почему вот эта функция - TMeshesCl.InMeshes всегда выдает false???? sob

function dlina(x1,y1,x2,y2:integer):integer;
begin
result:=trunc(sqrt(sqr(x2-x1)+sqr(y2-y1)));
end;

function geron(t1,t2,t3:TPoint):integer;
var p,st1,st2,st3:integer;
begin
st1:=dlina(t1.x,t1.y,t2.x,t2.y);
st2:=dlina(t2.x,t2.y,t3.x,t3.y);
st3:=dlina(t3.x,t3.y,t1.x,t1.y);
p:=trunc((st1+st2+st3)/2);
result:=(p*(p-st1)*(p-st2)*(p-st3));
end;

function TMeshesCl.InMeshes:boolean;
var i,s1,s2,s3,s:integer;
p,p1,p2,p3:integer;
st:array[1..3] of integer;
res:boolean;
m:Tpoint;
begin
m.x:=GetMousePos.X;
m.y:=GetMousePos.Y;
res:=false;
for i:=0 to length(pos) do begin
{главный треугольник}
s:=geron(pos[i,1],pos[i,2],pos[i,3]);
{первый дополнительный треугольник}
s1:=geron(pos[i,1],m,pos[i,2]);
{второй дополнительный треугольник}
s2:=geron(pos[i,2],m,pos[i,3]);
{третий дополнительный треугольник}
s3:=geron(pos[i,1],m,pos[i,3]);
{проверка на вхождение}
if (s1+s2+s3)=s then res:=true;
end;
result:=res;
end;

 
ПрохожийДата: Пятница, 06 Февраля 2009, 10:57 | Сообщение # 2
Группа: Гости





Да все, я уже нашел и другой алгоритм))) мне просто надо кучу-кучу( 0_о ) треугольников проверять на вхождение в них курсора))
 
  • Страница 1 из 1
  • 1
Поиск: