Цитата:
Почему вот эту не записать как
Да...согласен, так лучше будет - меньше условий в цикле.
Код:
function TGeoTriangle.IsInside( const pt:TGeoPoint ):Boolean;
var m,t:TMat3; v:TVec3; i:integer; signD:single;
begin
Result := true;
m.Row[0] := Point[0];
m.Row[1] := Point[1];
m.Row[2] := Point[2];
v := pt;
signD := m.det;
i:=0;
repeat
t := m;
t.Row[i] := v;
if( t.det*signD < 0 )then
exit( false );
Inc( i );
until i>2;
end;
А вот что получилось с вычислением угла(не проверял ещё):
Код:
function TGeoPoint.Angle( const A,B:TGeoPoint ):single;
var vA,vB,vSelf:TVec3;
begin
vA := A; vB := B; vSelf := self;
vA := vA - vSelf * ( vA and vSelf ); vA.Normalize;
vB := vB - vSelf * ( vB and vSelf ); vB.Normalize;
Result := arccos( vA and vB );
end;
Огромное спасибо,
TOTAL!!
ЗЫ: vA and vB - перегрузка оператора - скалярное произведение
ЗЗЫ: Вот это я понимаю форум! И формулы подсказали и программировать научили.