sowas sind standardformeln, die SOLLTE man in der schule gelernt haben, aber wenn nicht, kommt man halt auch nicht drauf...
abstrakt in Vektorform:
Delphi-Quellcode:
uses Math;
{
distanz zwischen zwei punkten (ortsvektoren) in beliebigem euklidischen raum:
d = Wurzel aus der Summe aller komponentendifferenzquadrate.
[url]http://de.wikipedia.org/wiki/Abstand[/url]
}
type Vector =
array of Integer;
function GetDistance(LocVec1, LocVec2: Vector): Integer;
var component_products_sum,i: Integer;
begin
Assert(length(LocVec1)=length(LocVec2), '
different dimensions comparison. not possible in this world.');
//assertion schreit bei aktivierten assertions....
component_products_sum := 0;
for i := 0
to Min(length(locvec1), length(locvec2)) -1
do //...code funktioniert allerdings in release-kompilat
begin
component_products_sum := component_products_sum + (locvec1[i] - locvec2[i])*(locvec1[i] - locvec2[i]);
end;
Result := sqrt(component_products_sum);
end;
konkret für zweidimensionalen raum mit TPoint ist DeddyHs Ansatz so auszuformulieren:
Delphi-Quellcode:
uses math;
function DistanceBetween(const p1,p2: TPoint): extended;
begin
Result := sqrt((p1.X - p2.X)*(p1.X - p2.X) + (p1.Y - p2.Y)*(p1.Y - p2.Y));
end;
äh. glaub ich zumindest. wie quadriert man gleich nochmal in Delphi?!
Wenn sich jemand des ersten Codeschnipsels annimmt und es testet und ein wenig poliert, wäre das denke ich auch ein kandidat für die CodeLib...
EDIT: Ich kann das grad nicht, ich soll hier im Büro eigentlich Excel und Word vergewaltigen...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1