AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck
Thema durchsuchen
Ansicht
Themen-Optionen

Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

Ein Thema von ohkay · begonnen am 25. Jun 2012 · letzter Beitrag vom 26. Jun 2012
Antwort Antwort
Seite 2 von 3     12 3      
ohkay

Registriert seit: 25. Jun 2012
6 Beiträge
 
#11

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 07:13
nochmal erklärt:
der rest macht sin und cos
danke für den ansatz un die bilder aber zeig mir mal bitte eine formel wie ich das mache
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#12

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 08:55
Dein Rechteck ist durch 4 Strecken definiert (die Kanten).
Dein Polygon ist durch N Strecken definiert.

Du gehst nun alle Strecken p des Polygons durch und prüfst für jedes p, ob sie sich mit einer der 4 Strecken r des Rechteckes schneidet.

Wenn Du weißt, wie man
1. aus zwei Punkten eine Geradengleichung macht,
2. den Unterschied zwischen Gerade und Strecke kennst sowie
3. ausrechnen kannst, ob und wo sich zwei Strecken schneiden

dann sollte es kein Problem sein, das hinzubekommen, sofern du
4. programmieren kannst
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.134 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 08:57
hier ist mal ein Code fragment zum Ergänzen , kannst Du damit etwas anfangen ?

Delphi-Quellcode:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    btntest: TButton;
    procedure btntestClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;



tLineType = (Horizontal, Vertikal, unbekannt);


tSimpleLine = record
        StartPunkt : TPoint;
        EndPunkt : TPoint;
        LineType : TLineType;
end;



function Line_Intersection ( Line1 , Line2 : tSimpleLine) : Boolean;





var
  Form1: TForm1;

implementation



///
/// Linie1 ist eine Linie des Rechtecks
/// Linie2 kommt vom Polygon
///
function Line_Intersection ( Line1 , Line2 : tSimpleLine) : Boolean;
begin

     case Line1.LineType of


     Horizontal: begin



     end;


     Vertikal: begin


     end;



     unbekannt: begin


     end;

     end;


end;





{$R *.dfm}

procedure TForm1.btntestClick(Sender: TObject);
var a, b : tSimpleLine;
begin
      a.StartPunkt.x := 0;
      a.StartPunkt.y := 10;

      a.EndPunkt.x := 10;
      a.EndPunkt.y := 10;

      a.LineType := Horizontal;

      b.StartPunkt.x := 5;
      b.StartPunkt.y := 5;

      b.EndPunkt.x := 12;
      b.EndPunkt.y := 15;

      b.LineType := unbekannt;


      if Line_Intersection(a,b) then
         Memo1.Lines.Add('Line schneidet PolyGon')
         else
         Memo1.Lines.Add('Line schneidet PolyGon NICHT ')


end;

end.
  Mit Zitat antworten Zitat
schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#14

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 11:06
Vergiss meine Idde viel zu umständlich.
Was die andere Betrifft, du hast 4 Geraden von deinem Viereck,
und hast n geraden von deinem Polygon.

jetzt vergleichst du alle n Geraden mit den 4 (also hast du 4*n Abfragen).

Diese Funktion sollte es tun: http://www.swissdelphicenter.ch/de/showcode.php?id=2075
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 13:03
Vergiss meine Idde viel zu umständlich.
Was die andere Betrifft, du hast 4 Geraden von deinem Viereck,
und hast n geraden von deinem Polygon.

jetzt vergleichst du alle n Geraden mit den 4 (also hast du 4*n Abfragen).

Die berechnet leider nur, ob zwei Geraden sich schneiden, nicht wo. Kann man vielleicht anpassen, aber weiß ich nicht... Determinanten haben wir in der Schule leider nie gemacht
  Mit Zitat antworten Zitat
schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#16

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 13:39
ich hatte Determinanten leider schon -.-

ne ner 2x2 Matrix wirds einfach so berechnet http://upload.wikimedia.org/wikipedi...2f486b4902.png

Nur wie man ne schöne Funktion aus den Punkten bekommt (in Form f(x)=a*x+b) wüste ich jetzt keinen Ansatz
Zum weiter lesen, hab jetzt keine Zeit mehr dazu: http://www.xnamag.de/forum/viewtopic.php?t=2674
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#17

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 13:42
Nur wie man ne schöne Funktion aus den Punkten bekommt (in Form f(x)=a*x+b) wüste ich jetzt keinen Ansatz
Das ist einfach mit der Punkt-Steigungs-Form, siehe mein Bild oben
  Mit Zitat antworten Zitat
schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#18

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 14:20
Ja klar, aber kann man die Determinante auch mit Komma zahlen berechnen? Ich hatte Mathe-LK und muss sagen ich kann mich an keine erinnern. Wobei wir die Determinante nie bei Geometrie eingesetzt haben, sondern bei dem Krempel Bild Uhrbild Kern etc von Matrizen.
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#19

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 16:42
Zwei Geraden schneiden sich? G1 = Ax+B, G2 = Mx+N
Ergo setzen wir G1=G2 (Y-Werte sind ja gleich) und suchen dazu das X...
Ax+B = Mx+N
Ax-Mx = N-B
x(A-M) = N-B
x = (N-B)/(A-M)

Fein. Wir können als X ausrechnen und dann setzen wir das in (z.B.) G1 ein und erhalten den Schnittpunkt S = (X,A*X+B)

Eigentlich haben wir ja keine Geraden, sondern Strecken. G1 wird also durch p1 und p2 begrenzt, G2 durch q1 und q2.
Der Punkt S befindet sich auf der Strecke (p1-p2) genau dann, wenn?.... Sx zwischen p1x und p2x und Sy zwischen p1y und p2y liegt.

Eigentlich popeleinfach.
  Mit Zitat antworten Zitat
schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#20

AW: Schnittpunkte beliebiger Polygone mit einem beliebigem Achsen-parallelem Rechteck

  Alt 26. Jun 2012, 18:17
Nur noch sonderfall G1 = G2 und G1 || G2 beachten, sonst gibts n Division by Zero.
abfangen durch vergleichen der Steigung.

Aber ja stimmt, eigentlich müsste es so gehen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      

 

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 14:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz