Poison Nuke
21.09.2002, 17:15
Hallo,
ich habe mal wieder ein Problem :(
Ich will Berechnungen mit Vektoren durchführen (Abstandsberechnung usw.) aber bei der Brechnung der Länge eines Vektors kommen falsche Werte heraus, obwohl ich diesmal wohl fast alles ausprobiert habe.
Hier der Code der Berechnung:
CONST cube : array[1..8,1..3] of integer =
(( 150,-150,-150),( 150, 150,-150),
(-150, 150,-150),(-150,-150,-150),
( 150,-150, 150),( 150, 150, 150),
(-150, 150, 150),(-150,-150, 150));
TYPE vektor = array[1..3] of integer;
VAR point : vektor;
x1,x2,x3 : longint;
tiefe : real;
cam : vektor;
i,j : byte;
BEGIN
cam[1]:=500; cam[2]:=0; cam[3]:=0;
FOR i:=1 TO 8 DO BEGIN
FOR j:=1 TO 3 DO point[j]:=cube[i,j];
x1:=sqr(cam[1]-point[1]);
x2:=sqr(cam[2]-point[2]);
x3:=sqr(cam[3]-point[3]);
tiefe:=sqrt(x1+x2+x3);
END;
END;
Beim ersten Durchlauf sollte für x1 122500 rauskommen, aber es kommt -8742 raus und für "tiefe" sollte 410 rauskommen, es kommt aber 190 raus.
Ich habe schon zwei andere Programmierer per ICQ gefragt, aber auch sie wussten nicht, wieso falsche Werte herauskommen.
Ich hoffe ihr könnt mir erklären, woran das liegt.
ich habe mal wieder ein Problem :(
Ich will Berechnungen mit Vektoren durchführen (Abstandsberechnung usw.) aber bei der Brechnung der Länge eines Vektors kommen falsche Werte heraus, obwohl ich diesmal wohl fast alles ausprobiert habe.
Hier der Code der Berechnung:
CONST cube : array[1..8,1..3] of integer =
(( 150,-150,-150),( 150, 150,-150),
(-150, 150,-150),(-150,-150,-150),
( 150,-150, 150),( 150, 150, 150),
(-150, 150, 150),(-150,-150, 150));
TYPE vektor = array[1..3] of integer;
VAR point : vektor;
x1,x2,x3 : longint;
tiefe : real;
cam : vektor;
i,j : byte;
BEGIN
cam[1]:=500; cam[2]:=0; cam[3]:=0;
FOR i:=1 TO 8 DO BEGIN
FOR j:=1 TO 3 DO point[j]:=cube[i,j];
x1:=sqr(cam[1]-point[1]);
x2:=sqr(cam[2]-point[2]);
x3:=sqr(cam[3]-point[3]);
tiefe:=sqrt(x1+x2+x3);
END;
END;
Beim ersten Durchlauf sollte für x1 122500 rauskommen, aber es kommt -8742 raus und für "tiefe" sollte 410 rauskommen, es kommt aber 190 raus.
Ich habe schon zwei andere Programmierer per ICQ gefragt, aber auch sie wussten nicht, wieso falsche Werte herauskommen.
Ich hoffe ihr könnt mir erklären, woran das liegt.