Цитата:
Почему вот эту не записать как
Да...согласен, так лучше будет - меньше условий в цикле.
Код:
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 - перегрузка оператора - скалярное произведение
ЗЗЫ: Вот это я понимаю форум! И формулы подсказали и программировать научили.  
