AGB  ·  Datenschutz  ·  Impressum  







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

farbige Figur erkennen

Ein Thema von Baron Fel · begonnen am 12. Jun 2005 · letzter Beitrag vom 3. Sep 2005
Antwort Antwort
Seite 1 von 3  1 23      
Baron Fel

Registriert seit: 25. Mai 2005
Ort: Berlin
30 Beiträge
 
Delphi 5 Standard
 
#1

farbige Figur erkennen

  Alt 12. Jun 2005, 02:43
Hallo!
Ich bin mir net hundertprozentig sicher ob das hier hingehört, aber ich denke schon.

Ich habe einn Programm(soll mal ein Spiel werden, wenn es groß ist^^), bei dem auf einer Spielfläche erst ein Kreis erzeugt wird und danach Linien dazu kommen, die immer zwei Punkte des Kreisbogens miteinander verbinden...
Es ist für zwei Spieler gedacht und deshalb gibt es zwei Farben...
Die Spieler färben die vorher noch grauen Linien abwechselnd in ihrer Farbe ein.
Wer zuerst durch das Einfärben einer Linie ein Dreieck in seiner Farbe erzeugt, der hat verloren....

Nun habe ich ein Problem...
Die Kreise und Linien, etc habe ich mit Canvas und den ensprechenden Methoden gemacht...
Nun muss ich aber irgendwie prüfen ob eben ein Dreieck in der Spielerfarbe existiert...
Ich weiß net wie ich das anstellen soll und ich wär euch sehr dankbar...
Hab auch ein Bild eingefügt, wo eine Situation zu sehen ist, die theoretisch zu nem Entscheid führen müsste...

http://mitglied.lycos.de/baronfel/su...creen-prob.gif

P.S.: lasst euchnet von den ganzen anderen Sachen stören^^, das sind nur Parameter und Überwachungssachen...
Achso und ich wäre euch sehr dankbar, wenn ihr mir nicht sagen würdet, dass ich das mit OpenGL oder DirectX machen soll^^dazu hab ich keine Zeit^^

trotzdem schonmal danke im vorraus
Glück ist Zerbrechlich.
Fass es vorsichtig an.
Wie Porzellan
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 07:51
Hallo Baron Fel,

Zitat von Baron Fel:
Die Kreise und Linien, etc habe ich mit Canvas und den ensprechenden Methoden gemacht... Nun muss ich aber irgendwie prüfen ob eben ein Dreieck in der Spielerfarbe existiert...
Ich weiß net wie ich das anstellen soll und ich wär euch sehr dankbar...
wenn du die Koeffizienten der Geradengleichungen für deine Sekanten in einer geeigneten Struktur (zB. 2-dimensionales array) speicherst, dann kannst du für je zwei Sekanten leicht den Schnittpunkt ausrechnen. Die Prüfung, ob dieser Schnittpunkt außerhalb deines Kreises liegt, sollte nicht allzu schwierig sein.

Grüße vom marabu
  Mit Zitat antworten Zitat
Baron Fel

Registriert seit: 25. Mai 2005
Ort: Berlin
30 Beiträge
 
Delphi 5 Standard
 
#3

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 08:44
naja, das Prob iss nur, das ich die Linien nicht durch ne gleichung erstelle sondern durch lineto, also das verbinden tweierpunkte...

oder sollte ichaus den Punkten die Gleichung für jede Linie erechnen???
das werden ne menge und ich müsste unglaublich viele Variationen prüfen, die sich ja immer genau drei scheniden müssen...
Glück ist Zerbrechlich.
Fass es vorsichtig an.
Wie Porzellan
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 08:54
Sonntagsmoin

1. Mach es über ein DynArray oder Listen
2. Denk nicht über Bitmapparsing nach (Linien haben mehr als ein Punkt breite !!!)
3. kümmere Dich um einen flotten Algorithmus der die Listen durchgeht.

Wenn Du keine Zeit hast Dich mit GL zu beschäftigen, dann hast Du auch keine
um Bitmapparsing zu überstehen.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

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

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 09:51
vielleicht solltest du gleich damit anfangen, dreiecke und nciht-dreiecke zu zeichnen. nicht-dreiecke sind einfach linien, und dreiecke bestehen aus drei Linien plus drei Bools. wenn eine linie eines dreiecks dann markiert wird, kanst du das entsprechende bool auf true setzen, wen alle drei true sind -> Ex.

in deinem onmouseup musst du nur noch alle Strecken nach Punkt-In-Strecke prüfen, dafür gibt es bei den Schweizern oder auch hier in der DP genug codebeispiele.
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
Baron Fel

Registriert seit: 25. Mai 2005
Ort: Berlin
30 Beiträge
 
Delphi 5 Standard
 
#6

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 14:04
Zitat von mschaefer:
1. Mach es über ein DynArray oder Listen
2. Denk nicht über Bitmapparsing nach (Linien haben mehr als ein Punkt breite !!!)
3. kümmere Dich um einen flotten Algorithmus der die Listen durchgeht.
Danke für die schnelle Hilfe, aber was soll in das arry, oder die Liste????
Glück ist Zerbrechlich.
Fass es vorsichtig an.
Wie Porzellan
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 14:13
Zitat von Baron Fel:
Danke für die schnelle Hilfe, aber was soll in das arry, oder die Liste????
Die Linien. Du definierst Dir eine Klasse 'TLinie'. Die besteht aus zwei Punkten (X,Y). Wenn Du der Klasse noch eine Methode spendierst, die
prüft, ob eine andere Linie die Linie innerhalb des Kreises schneidet, dann hast fast gewonnen.
Denn ein Dreieck ist doch so definiert, das Line L1 die Line L2 schneidet. L2 schneidet L3 und L3 wieder L1.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#8

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 14:18
Also ich würde ein DynArray anlegen das nur die Endpunkte der roten Linine aufnimmt..
Also wenn du eine Linie zeichnest einen Einträg mit den Punktkoordinaten von(x.y) bis(x.y)
Beim Eintragen könntest Duz diese dann runden (auf den nächsten/vorherigen 5er) um Zeichenungenauigkeiten auszugleichen.

Um dann herauszubekommen ob es eine Verbindung gibt muß ein Algorithmus von einem beliebigen Punkt starten und von dort zum Verbindungspunkt gehen. Dann sucht er ob dieser in einer weiteren Verbindung der Liste vorkommt(2.) Strecke. Und von da an muß es eine Rückverbindung zum 3. geben. Das ganze findet man auch unter dem Begriff Critical-Path-Method / Traveling-Salesman-Problem.

zunächst erstmal soviel..

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 14:20
Toll. Und da bist Du ganz alleine drauf gekommen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#10

Re: farbige Figur erkennen

  Alt 12. Jun 2005, 14:35
Täusche Dich nicht!

Mathematisch gibt es da bisher keine optimale Lösung. Das sind meist Erfahrungsansätze die hier programmiert sind. Und da kann man sich noch gut die Zähne dran ausbeissen. Aber wenn Du soviel weiter bist dann man tao!

Um auf das Linienschneiden mal einzugehen. Wenn eine Linie gezeichnet wird. Muß Sie selbst testen ob Sie andere Linien schneidet. Insofern ist die Idee mit der Klasse gut. Die Linie wird dann in Linienabschnitte zerlegt und deren Endpunkte ebenfalls in die Lienineliste mit den Endpunkten eingetragen. Die Orginallinie ist dann selbst schon wieder überflüssig.

Gehe erstmal Kaffeetrinken...(Linien und Krümel...I


Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:56 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