Wiskundigen spreken wel over de Arccosinus of Boogcosinus... De volgende functie doet het in ieder geval prima!FUNCTION ArcCos(r:REAL;
VAR error:BOOLEAN):REAL;
BEGIN
error:=TRUE;
ArcCos:=0;
IF (r>1) OR (r<-1) THEN EXIT;
error:=FALSE;
IF Gelijk(r,1) THEN ArcCos:=0
ELSE IF Gelijk(r,-1)THEN ArcCos:=pi
ELSE ArcCos:=-ArcTan(r/SQRT(-r*r+1))+0.5*pi
END;
Hierbij is de functie Gelijk iets als:FUNCTION Gelijk(R1,R2:REAL):BOOLEAN;
BEGIN
Gelijk:=FALSE;
IF ABS(R1-R2)<1e-6 THEN Gelijk:=TRUE
END;
Dit laatste is vooral om te verkomen dat het programma vastloopt als r bijna 1 of -1 is, want dat willen we natuurlijk niet..:-) Je gebruikt hierbij dus de 'ingebouwde' functie ArcTan.
donderdag 26 september 2002