hedgewars/uFloat.pas
changeset 1640 31cf38df07ef
parent 1629 9f12da88d769
child 1652 2f15a299ffc6
equal deleted inserted replaced
1639:89b536a3cf3c 1640:31cf38df07ef
   333 {$INCLUDE SinTable.inc}
   333 {$INCLUDE SinTable.inc}
   334 
   334 
   335 function AngleSin(const Angle: Longword): hwFloat;
   335 function AngleSin(const Angle: Longword): hwFloat;
   336 begin
   336 begin
   337 {$IFDEF DEBUGFILE}
   337 {$IFDEF DEBUGFILE}
   338 TryDo((Angle >= 0) and (Angle < 2048), 'Sin param exceeds limits', true);
   338 TryDo((Angle >= 0) and (Angle <= 2048), 'Sin param exceeds limits', true);
   339 {$ENDIF}
   339 {$ENDIF}
   340 AngleSin.isNegative:= false;
   340 AngleSin.isNegative:= false;
   341 if Angle < 1024 then AngleSin.QWordValue:= SinTable[Angle]
   341 if Angle < 1024 then AngleSin.QWordValue:= SinTable[Angle]
   342                 else AngleSin.QWordValue:= SinTable[2048 - Angle]
   342                 else AngleSin.QWordValue:= SinTable[2048 - Angle]
   343 end;
   343 end;
   344 
   344 
   345 function AngleCos(const Angle: Longword): hwFloat;
   345 function AngleCos(const Angle: Longword): hwFloat;
   346 begin
   346 begin
   347 {$IFDEF DEBUGFILE}
   347 {$IFDEF DEBUGFILE}
   348 TryDo((Angle >= 0) and (Angle < 2048), 'Cos param exceeds limits', true);
   348 TryDo((Angle >= 0) and (Angle <= 2048), 'Cos param exceeds limits', true);
   349 {$ENDIF}
   349 {$ENDIF}
   350 AngleCos.isNegative:= Angle > 1024;
   350 AngleCos.isNegative:= Angle > 1024;
   351 if Angle < 1024 then AngleCos.QWordValue:= SinTable[1024 - Angle]
   351 if Angle < 1024 then AngleCos.QWordValue:= SinTable[1024 - Angle]
   352                 else AngleCos.QWordValue:= SinTable[Angle - 1024]
   352                 else AngleCos.QWordValue:= SinTable[Angle - 1024]
   353 end;
   353 end;