Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
Delphi 7 Enterprise
|
Re: Gibt es eine direkte Verbindung zwischen 2 Pixeln
10. Okt 2004, 23:21
Moin,
dafür ist etwas Vektorrechnung erforderlich...
Ich habe hier mal die Berechnung für 3D-Punkte angegeben, wenn du nur 2D-Punkte hast lässt du einfach die dritte Dimenstion auf Null.
Delphi-Quellcode:
type
TPoint3D = packed record
X: Longint;
Y: Longint;
Z: Longint;
end;
:
function Point3D(X, Y, Z: Integer): TPoint3D;
begin
Result.X := X;
Result.Y := Y;
Result.Z := Z;
end;
function PunktAufGerade(P1, P2, P3:TPoint3D):boolean;
function subP(P1, P2:TPoint3D):TPoint3D;
begin
Result.X:=P1.X - P2.X;
Result.Y:=P1.Y - P2.Y;
Result.Z:=P1.Z - P2.Z;
end;
function skalar(a, b:integer):integer;
begin
if b = 0 then
Result:=0
else
Result:=a div b;
end;
var a, b:TPoint3D;
sX, sY, sZ:integer;
begin
a:=subP(P2, P1);
b:=subP(P3, P1);
sX:=skalar(a.X, b.X);
sY:=skalar(a.Y, b.Y);
sZ:=skalar(a.Z, b.Z);
Result:= (sX = sY)
and (sX = sZ);
end;
procedure TForm.ButtonClick(Sender: TObject);
var a, b, c:TPoint3D;
begin
a:=Point3D(3, 0, 4);
b:=Point3D(1, 1, 1);
c:=Point3D(-1, 2, -2);
if PunktAufGerade(a, b, c) then
showmessage('auf der Gerade')
else
showmessage('nicht auf der Gerade');
end;
hier wird getestet, ob die drei Punkte auf einer Geraden liegen.
MfG
Thorsten
|
|
Zitat
|