Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:52

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Linienverfolgung...
BeitragVerfasst: Mi Jun 09, 2004 13:09 
Offline
DGL Member

Registriert: Di Apr 27, 2004 13:38
Beiträge: 13
Hidiho, ich bin es mal wieder :roll:

Also, folgende Frage:
Wie erkenne bzw. bilde ich einen Linienzug aus Linien?
Hört sich idiotisch an .. aber hier der Hintergrund:

Ich habe eine Zeichnung (DXF) aus der der Benutzer [n] Linien auswählt. Diese müssen (für den User) nicht zusammenhängen.

Nun muß ich aber Programmseitig erkennen welche Linie an welche angrenzt (mit einer gewissen Toleranz, max. 1.5mm, Zeichnung ist im Maßstab 1:1).

Wenn nun ein Sprung in den Linien ist, soll dieser aber durch die naheliegstenste - noch nicht im Zug erfaßte - Linie gefüllt werden.

Die einzelnen Linien liegen in der Art vor wie:

Code:
  1.  
  2. type tkoord=record
  3.   x,y : Float;
  4. end;
  5.  
  6. type TElement=record
  7.   p0,      // Startpunkt
  8.   p1 : TKoord;     // Endpunkt
  9.   Selected : Boolean;    // Linie ausgewählt?
  10. end;
  11.  
  12. pElement : ^TElement;
  13.  
  14. ...
  15.  
  16. var
  17.       ElementListe : TList;
  18.       Element      : pElement;
  19.  
  20.  


ich habe schon einiges rumgebastelt, aber es kommt bestenteils müll dabei raus. Die Entscheidung ob eine Linie ausgewählt und damit in der Zugerfassung berücksichtig werden sollte ist in Element^.Selected.

Hoffe ihr habt eine idee


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 09, 2004 15:46 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Eventuell wäre eine kleine Skizze (jpg) hilfreich. Vorher nachher und so.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 10, 2004 01:01 
Offline
DGL Member

Registriert: Di Apr 27, 2004 13:38
Beiträge: 13
Aber gerne doch.

Also im Grunde enie 3-Step-Bearbeitung.
1. Zeichnung wird geladen und dem User angezeigt.
Bild

2. Der Benutzer wählt Linien aus. Wobei es dann natürlich vorkommen kann das der Benutzer eine Linie Überspringt. In dem Falle sollte dann die nächstliegende genommen werden.
Bild

3. Aus den angegebenen Linien wird ein Polygon gebildet, bzw. ein Array von Punkten (wie oben, typ TKoord);
Bild

Bis zu schritt 2 komme ich ohne weitere Probleme, aber den 3. Schritt kriege ich nicht hin :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 10, 2004 15:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Einfachste Methode wäre die Punkte entgegen dem Uhrzeigersinn in ein
glBegin(GL_POLYGONE) glEnd - Block zu packen. GL_POLYGONE is aber dodal Performance killend, also musst du dir was einfallen lassen, wie du dein Polygone in Dreiecke aufteils und zeichnest. Sowas kann durchaus komplex werden. Aber eventuell gehts ja wenn du die Punkte in einem glBegin(GL_TRIANGLE_FAN) übergibst.

Wenn du jetzt total Bahnhof verstanden hast, und du überhaupt net weißt wie man mit OpenGL arbeitet, dann empfehle ich dir mal die Tutorials hier auf der Seite. Eigentlich sollte Schritt 1 und 2 mehr Aufwand kosten als Schritt 3. :wink:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 12, 2004 12:45 
Offline
DGL Member

Registriert: Di Apr 27, 2004 13:38
Beiträge: 13
Nene... es geht grade nicht um OpenGL, sondern um die Technik aus den linien einen Sinnigen Linienzug zu basteln.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 13, 2004 10:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
So wie ich das sehe sind alle Linien vorhanden und du sollst nur die finden, die in der Form da oben fehlt, oder? Wenn ja, dann geht das doch recht einfach : Alle Linien die markiert wurden durchgehen und sehen ob es unmarkierte Linien gibt deren Endpunkt(e) dem/der einer markierten Linien (am besten mit leichter Toleranz vergleichen) entsprechen. Wenn eine unmarkierte Linie mindestens einen Endpunkt hat der fast auf der gleichen Stelle liegt wie der Endpunkt einer markierten Linie, dann gehört sie wohl zu der Form.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]