AGB  ·  Datenschutz  ·  Impressum  







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

Triangulationsalgorithmus

Ein Thema von Skript · begonnen am 11. Jul 2004 · letzter Beitrag vom 17. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#1

Triangulationsalgorithmus

  Alt 11. Jul 2004, 10:30
Hallo,

Ich suche verzweifelt ein in Delphi programmierter Algorithmus zur Triangulation eines Polygons mit Löchern... kann mir dabei jemand weiterhelfen?

Gruss & Dank

Skript
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Triangulationsalgorithmus

  Alt 11. Jul 2004, 11:06
Ich nehme an für 3-D ???
Und sind die Löcher rund oder beliebiger Form?
Thomas
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#3

Re: Triangulationsalgorithmus

  Alt 11. Jul 2004, 11:18
Die Fläche ist immer eben, also 2D und die Löcher sind ebenfalls Polygone, also beliebige Formen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Triangulationsalgorithmus

  Alt 11. Jul 2004, 19:40
Ich weiss nur das Innen und Aussen bei einem nicht-konvexen Polygon schwer zu entscheiden ist.
Hast du einen Algorithmus gefunden? C umzuschreiben sollte nicht so schwer sein.
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#5

Re: Triangulationsalgorithmus

  Alt 11. Jul 2004, 21:21
Ich habe erst einen ohne Löcher gefunden, aber einer mit ist, soviel ich gelesen habe, ziemlich anderst
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Triangulationsalgorithmus

  Alt 11. Jul 2004, 23:26
Ich kann Dir zwar keinen Code geben, aber vielleicht hilft Dir das:


Also ich würde die Anzahl der äußeren Punkte mit der Anzahl der inneren Punkte vergleichen.
Die Differenz ist dann die Anzahl von Punkten die zwei Schnittgeraden bekommen(siehe Anhang).
Die Schnittgeraden teilst Du dann auf indem Du ein geeignetes Paar findest und davon ausgehend immer ein Punkt wanderst.
Bei jedem Paar das nicht eine Doppelverbindung hat musst Du zusätzlich noch eine Schnittggerade zu dem davorgehenden Punkt machen, da sonst ja ein Viereck entstehen würde.

Falls das jetzt zu undeutlich war, oder Du dir das schon selbst gedacht hast dann wars wenigstens ein Versuch wert...


[edit] Anhang vergessen [/edit]
Miniaturansicht angehängter Grafiken
skizze_189.jpg  
Thomas
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#7

Re: Triangulationsalgorithmus

  Alt 12. Jul 2004, 19:27
Ohgott, das musste ich jetzt zuerst 10 mal lesen bevor ich es einigermassen begriffen hatte Hmmm ich werde mich dann jetzt mal mathematisch etwas kullern und hirnen

Wenn noch jemand Interesse hat mitzudenken, ist er herzlich eingeladen
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#8

Re: Triangulationsalgorithmus

  Alt 12. Jul 2004, 19:36
ftp://ftp.cs.unc.edu/pub/users/manoc...Triangulation/

ist allerdings in C geschrieben
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#9

Re: Triangulationsalgorithmus

  Alt 13. Jul 2004, 19:10
Oh toll! Das versuch ich mit meinen bescheidenen C-Kenntnissen umzuschreiben

Bier verdient!
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#10

Re: Triangulationsalgorithmus

  Alt 16. Jul 2004, 22:18
Hallo,

Habe jetzt angefangen das Programm zu übersetzen, ich blieb jetzt aber doch an meinen beschränkten C++ Kenntnissen hängen, weil: In der Funktion geht es um eine Zufalls-Permutation, aber ich begreiffe nicht, was mit dem Int *p passiert, bzw. wie man das in Delphi deklarieren könnte? Zuerst ist es ein Pointer auf ein Integer und dann wird ihm ein Array übergeben?

Kann mir jemand helfen diese Funktion in Delphi umzuschreiben?


Globale Variablen:

Code:
static int choose_idx;
static int permute[SEGSIZE];
Diese Funktion:

Code:
/* Generate a random permutation of the segments 1..n */
int generate_random_ordering(n)
     int n;
{
  struct timeval tval;
  struct timezone tzone;
  register int i;
  int m, st[SEGSIZE], *p;
 
  choose_idx = 1;
  gettimeofday(&tval, &tzone);
  srand48(tval.tv_sec);

  for (i = 0; i <= n; i++)
    st[i] = i;

  p = st;
  for (i = 1; i <= n; i++, p++)
    {
      m = lrand48() % (n + 1 - i) + 1;
      permute[i] = p[m];
      if (m != 1)
   p[m] = p[1];
    }
  return 0;
}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:35 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