Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#39

Re: Distanz 2er Punkte berechnen

  Alt 29. Mai 2008, 11:39
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
  Mit Zitat antworten Zitat