AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Pixelkoordinaten einer Linie
Thema durchsuchen
Ansicht
Themen-Optionen

Pixelkoordinaten einer Linie

Ein Thema von calculon · begonnen am 28. Jul 2007 · letzter Beitrag vom 29. Jul 2007
 
Benutzerbild von calculon
calculon

Registriert seit: 16. Sep 2006
256 Beiträge
 
Delphi 7 Personal
 
#12

Re: Pixelkoordinaten einer Linie

  Alt 28. Jul 2007, 18:27
Zitat:
Die Frage ist nur, ob die Antwort zum Problem passt. Leider wurde es nicht genau beschrieben.
Interessant ist doch, ob es hier um Pixel oder Punkte geht. (Integer oder real) die vorgeschlagenen verfahren laufen auf das zweite herraus, wobei der Borg nicht erklärt hat, wann eine Gleichung wahr ist, also wann zwei Zahlen gleich sind.
Es geht um Pixel (Integer).

Zitat von Nikolas:
Wenn das Ganze also ein Zeichenprogramm werden soll, wird man mit den Verfahren nicht glücklich, da sie alles sehr genau nehmen.
Es geht um ein Spiel.

Meine Function sieht nun so aus und scheint zu funktionieren:

Delphi-Quellcode:
function TSpieler.FreieSicht(x1,y1,x2,y2,nummer:integer):boolean;
var
m: double; // <-- Steigungskonstante
x3, y3: integer; // <-- Spielerkoordinaten
begin
  x3 := mdaten.daten[nummer].X;
  y3 := mdaten.daten[nummer].Y;

  // Wenn P1 und P2 senkrecht stehen:
  if (x1 = x2) and (x3 = x1) then
    begin
      if ((y3 >= y1) and (y3 <= y2)) or ((y3 <= y1) and (y3 >= y2)) then
        begin
          result := true; // innerhalb der Strecke [P1P2]
        end
        else
        begin
          result := false; // außerhalb der Strecke [P1P2]
        end;
      exit;
    end;

  m := (y2-y1)/(x2-x1); // Berechnung der Steigung

  if (y3 = round(x3 * m + y1)) then
    begin
      if ((x3 >= x1) and (x3 <= x2)) or ((x3 <= x1) and (x3 >= x2)) then
        begin
          result := true; // innerhalb der Strecke [P1P2]
        end
        else
        begin
          result := false; // außerhalb der Strecke [P1P2]
        end;
      exit;
    end
    else
    begin
      result := false;
      exit;
    end;
end;
Das mit den Vektoren werd' ich mir mal auch genauer anschauen. Auf jeden Fall Danke für die Hilfe!

Gruß

Calculon
--
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz