hedgewars/uFloat.pas
changeset 1629 9f12da88d769
parent 1586 2c6f1d1f43c1
child 1640 31cf38df07ef
equal deleted inserted replaced
1628:4939254196d6 1629:9f12da88d769
    16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    17  *)
    17  *)
    18 
    18 
    19 unit uFloat;
    19 unit uFloat;
    20 interface
    20 interface
       
    21 
       
    22 {$INCLUDE options.inc}
    21 
    23 
    22 {$IFDEF FPC}
    24 {$IFDEF FPC}
    23 {$ifdef FPC_LITTLE_ENDIAN}
    25 {$ifdef FPC_LITTLE_ENDIAN}
    24 type hwFloat = record
    26 type hwFloat = record
    25                isNegative: boolean;
    27                isNegative: boolean;
   330 
   332 
   331 {$INCLUDE SinTable.inc}
   333 {$INCLUDE SinTable.inc}
   332 
   334 
   333 function AngleSin(const Angle: Longword): hwFloat;
   335 function AngleSin(const Angle: Longword): hwFloat;
   334 begin
   336 begin
       
   337 {$IFDEF DEBUGFILE}
       
   338 TryDo((Angle >= 0) and (Angle < 2048), 'Sin param exceeds limits', true);
       
   339 {$ENDIF}
   335 AngleSin.isNegative:= false;
   340 AngleSin.isNegative:= false;
   336 if Angle < 1024 then AngleSin.QWordValue:= SinTable[Angle]
   341 if Angle < 1024 then AngleSin.QWordValue:= SinTable[Angle]
   337                 else AngleSin.QWordValue:= SinTable[2048 - Angle]
   342                 else AngleSin.QWordValue:= SinTable[2048 - Angle]
   338 end;
   343 end;
   339 
   344 
   340 function AngleCos(const Angle: Longword): hwFloat;
   345 function AngleCos(const Angle: Longword): hwFloat;
   341 begin
   346 begin
       
   347 {$IFDEF DEBUGFILE}
       
   348 TryDo((Angle >= 0) and (Angle < 2048), 'Cos param exceeds limits', true);
       
   349 {$ENDIF}
   342 AngleCos.isNegative:= Angle > 1024;
   350 AngleCos.isNegative:= Angle > 1024;
   343 if Angle < 1024 then AngleCos.QWordValue:= SinTable[1024 - Angle]
   351 if Angle < 1024 then AngleCos.QWordValue:= SinTable[1024 - Angle]
   344                 else AngleCos.QWordValue:= SinTable[Angle - 1024]
   352                 else AngleCos.QWordValue:= SinTable[Angle - 1024]
   345 end;
   353 end;
   346 
   354