AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abschlusstest Info

Ein Thema von po2407 · begonnen am 25. Jan 2007 · letzter Beitrag vom 26. Jan 2007
Antwort Antwort
po2407

Registriert seit: 22. Jan 2007
1 Beiträge
 
#1

Abschlusstest Info

  Alt 25. Jan 2007, 07:48
Hallo!
Ich muss für Delphi (Version 6) ein Programm schreiben indem ich ein Polygon zeichnen muss und danach ein Punkt. Mit einem betätigen eines Button muss dann angezeigt werden ob der Punkt innerhalb oder ausserhalb liegt. Das Polygon und denn Punkt zu zeichnen war einfach aber rauszufinden ob der Punkt innerhalb des Polygons liegt oder nicht ist leider zu schwierig für mich, könnt ihr mir helfen?
Ich weiß das es mit der Kreuzungsmethode geht, mehr aber nicht. D.h. von meinem Punkt aus zeichne ich einen imaginäre Linie die wahrscheinlich meine Polygonkanten kreuzt. Je nach Anzahl der Kreuzungen liegt der Punkt dann innerhalb oder ausserhalb. Wenn möglich bringt mir die Lösung gleich in Delhisprache. Thx.

[edit=SirThornberry]Programmiersprache geändert - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Abschlusstest Info

  Alt 25. Jan 2007, 07:55
Bei Google suchenpunkt in polygon
BTW seit wann kann D6 .Net?
Markus Kinzler
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#3

Re: Abschlusstest Info

  Alt 25. Jan 2007, 11:22
Tja... da gibts mehrere Möglichkeiten, eine mathematisch korrekte, allerdings etwas aufwändigere, eine speicheraufwändige und eine, mit der man schnell zur Lösung kommt, allerdings als Schummler dargestellt werden könnte Zunächst einmal bräucht ichn paar Infos:

1. Der Punkt - is das nurn Pixel?
2. Das Polygon - is das gefüllt oder lediglich ne Kontur?
3. Worein hast du das gezeichnet? Ins Formular, in eine Imagekomponente oder ein Zeichenfeld (Draw)?

Wenn du mir das beantwortet hast bastel ich dir ne Lösung!

Greetings,

DER DOC
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Abschlusstest Info

  Alt 25. Jan 2007, 12:17
am einfachsten geht es wohl mit der GDI-Funktion MSDN-Library durchsuchenPtInRegion. Aber ich hege den Verdacht, ihr sollt einen Algorithmus dafür implementieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#5

Re: Abschlusstest Info

  Alt 25. Jan 2007, 17:58
glaube nicht, dass der lehrer das gern sieht. die idee is gut, aber für ne prüfung darf man wahrscheinlich eh nur die zur verfügung stehenden komponenten nutzen
  Mit Zitat antworten Zitat
Benutzerbild von jakobwenzel
jakobwenzel

Registriert seit: 31. Aug 2005
Ort: Ingelheim am Rhein
141 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Abschlusstest Info

  Alt 25. Jan 2007, 18:45
Wenn das Polygon gefüllt ist: Einfach vor dem Zeichnen des Punktes gucken, welche Farbe an der Stelle vorher is.
Dürfte auch die Perfomance-Technisch beste möglichkeit sein
Jakob Wenzel
"My store now sells Ninja Weapons!"
Comicverkäufer bei den Simpsons
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#7

Re: Abschlusstest Info

  Alt 26. Jan 2007, 09:38
Hätte ich auch gesagt, aber ich denk mal das is eher geschummelt als das Problem wirklich gelöst. Sicher brauchts einen mathematischen Lösungsweg, aber po... schreibt ja nich zurück, wie ers gern hätte
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#8

Re: Abschlusstest Info

  Alt 26. Jan 2007, 10:34
Null Problem: Du fällst ein Lot vom Punkt auf die X-Achse. Jetzt prüfst Du, mit wievielen Seiten des Polygons sich die Strecke vom Punkt bis zum Lotfuß schneidet. Ist diese Anzahl ungerade, liegt der Punkt im Polygon.

Optimierungen:
- zunächst die Ecken des Polys mit dem Punkt vergleichen. Ist eine Eche gleich, liegt er auf dem Rand.
- nur die Seiten Testen, deren Anfang und Ende auf gegenüberliegenden Seiten des Punktes liegen.
- nur die Seiten Testen, die mindestens einen Punkt (Anfang oder Ende) unterhalb des Punktes haben.
- zunächst nur die Geraden schneiden (also keine Prüfung, ob der Schnittpunkt auf beiden Strecken liegt). gibt es unendlich viele Schnittpunkte, liegt der Punkt auf der Kante.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:45 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