Verständnissfrage zu Vertex
Verständnissfrage zu Vertex
muß jetzt mal ganz dumm fragen.
wie bekomme ich aus x und y koordinaten (z.b. x=51.12 , y=12.37) in PB nen Vertex?
Sprich wie muß ich das programmiertechnisch machen das ich ner OpenGL funktion dann nen Vertex übergeben kann?
wie bekomme ich aus x und y koordinaten (z.b. x=51.12 , y=12.37) in PB nen Vertex?
Sprich wie muß ich das programmiertechnisch machen das ich ner OpenGL funktion dann nen Vertex übergeben kann?
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Da brauchst du entweder ne Struktur oder nen Array mit Doubles:nicolaus hat geschrieben:nee leider nich das is ja nich das prob.
ich brauch das für die funktionen wie z.b. gluTessVertex() und da will die function nen vertex des eckpunktes übergeben haben.
gluTessVertex
The gluTessVertex function specifies a vertex on a polygon.
void gluTessVertex(
GLUtesselator *tess,
GLdouble coords[3],
void *data
);
Parameters
tess
The tessellation object (created with gluNewTess).
coords
The location of the vertex.
data
An pointer passed back to the program with the vertex callback (as specified by gluTessCallback).
Remarks
The gluTessVertex function describes a vertex on a polygon that the user is defining. Successive gluTessVertex calls describe a closed contour. For example, to describe a quadrilateral, call gluTessVertex four times. You can only call gluTessVertex between gluTessBeginContour and gluTessEndContour.
The data parameter normally points to a structure containing the vertex location, as well as other per-vertex attributes such as color and normal. This pointer is passed back to the program through the GLU_VERTEX callback after tessellation (see gluTessCallback).
Example
The following describes a quadrilateral with a triangular hole:
gluTessBeginPolygon(tess, NULL);
gluTessBeginContour(tess);
gluTessVertex(tess, v1, v1);
gluTessVertex(tess, v2, v2);
gluTessVertex(tess, v3, v3);
gluTessVertex(tess, v4, v4);
gluTessEndContour(tess);
gluNextContour(tess, GLU_INTERIOR);
gluTessBeginContour(tess);
gluTessVertex(tess, v5, v5);
gluTessVertex(tess, v6, v6);
gluTessVertex(tess, v7, v7);
gluTessEndContour(tess);
gluTessEndPolygon(tess);
Requirements
Windows NT/2000: Requires Windows NT 3.5 or later.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in Glu.h.
Library: Use Glu32.lib.
See Also
gluNewTess, gluTessBeginContour, gluTessBeginPolygon, gluTessCallback, gluTessEndContour, gluTessNormal, gluTessProperty
Built on Tuesday, August 22, 2000
Zuletzt geändert von DarkDragon am 08.10.2005 16:55, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Ein Vertex eines Eckpunktes? Der Eckpunkt IST das Vertex. Ich versteh nicht wirklich was du willst. Am besten beschreibst du dein Problem nochmal in Ruhe und genau, dass jeder weiß was gemeint ist.ich brauch das für die funktionen wie z.b. gluTessVertex() und da will die function nen vertex des eckpunktes übergeben haben.
Allgemein: Was zu beachten ist, bei OpenGL liegt der Koordinatenursprung standardgemäß unten links im Eck. Bei PB und den meisten Windows-Anwendungen liegt er oben links. Daher müsstest du von deinen Koordinaten, wenn sie von oben links ausgehen, umrechnen auf die untere linke Ecke. Das bringt dir dann aus einer Screenkoordinate eine Vertex-Koordinate, aber ist es das was du wolltest? So ganz weiß ich noch nicht was du willst.^^
naja zur zeit versuch ich das so:
ich habe 2 Strukturen und ne LinketList
beim einlesen der Daten aus dem file schreib ich die daten (lat, lon) in die structure. Das x und y in der FIR_VERTEX ist gleich x=lat und y=lon. Das z ist immer gleich 0.0 (wird aber wohl in nem Vertex Array gebraucht so weit ich weis)
Anhand der id aus der Structure FIR weis ich wann ein bereich aufhört (was später ein polygon wird) und wann der nächste bereich anfängt (das nächste neue polygon).
Mit den gluTess functionen möchte ich nun ne tessalierung über das Polygon laufen lassen das ich nich mehr der hässlichen fehler bekomme die ich hier schon mal gepostet hatte.
Jetzt weis ich nur nich wie ich bei z.b. gluTessVertex das Array aus der FIR structure übergeben muß.
ich habe 2 Strukturen und ne LinketList
Code: Alles auswählen
Structure FIR_VERTEX
x.f
y.f
z.f
EndStructure
Structure FIR
lat.f
lon.f
id.l
Region.s
Vertex.FIR_VERTEX[0]
EndStructure
NewList FIR.FIR()Anhand der id aus der Structure FIR weis ich wann ein bereich aufhört (was später ein polygon wird) und wann der nächste bereich anfängt (das nächste neue polygon).
Mit den gluTess functionen möchte ich nun ne tessalierung über das Polygon laufen lassen das ich nich mehr der hässlichen fehler bekomme die ich hier schon mal gepostet hatte.
Jetzt weis ich nur nich wie ich bei z.b. gluTessVertex das Array aus der FIR structure übergeben muß.
Das mit dem eckpunkt is schon klar. Die sache wird soweit ja auch richtig gerendert nur habe ich bei den Polygonen das prob das die nicht konvexe polygone sind und es so zu sehr hässlichen fehlern kommt bei der darstellung. Um dieses prob zu lösen gibts zwei wege.Sunny hat geschrieben:
Allgemein: Was zu beachten ist, bei OpenGL liegt der Koordinatenursprung standardgemäß unten links im Eck. Bei PB und den meisten Windows-Anwendungen liegt er oben links. Daher müsstest du von deinen Koordinaten, wenn sie von oben links ausgehen, umrechnen auf die untere linke Ecke. Das bringt dir dann aus einer Screenkoordinate eine Vertex-Koordinate, aber ist es das was du wolltest? So ganz weiß ich noch nicht was du willst.^^
1. Ne triangulierung drüber laufen lassen. Dafür habe ich leider keine formel und kenne mich erlich gesagt auch absolut nich aus damit.
2. Mit den gluTess funktionen das polygon tessalieren (ist wohl das selbe wie triangulieren nur schon in glu drin???)
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Kann man umstellen in den Parametern soviel ich weiß.nicolaus hat geschrieben:wird aber wohl in nem Vertex Array gebraucht so weit ich weis
x_low.fnicolaus hat geschrieben:Mit den gluTess functionen möchte ich nun ne tessalierung über das Polygon laufen lassen das ich nich mehr der hässlichen fehler bekomme die ich hier schon mal gepostet hatte.
Jetzt weis ich nur nich wie ich bei z.b. gluTessVertex das Array aus der FIR structure übergeben muß.
x_high.f
y_low.f
y_high.f
z_low.f
z_high.f
Und dann nimmst du remi_meiers optimierer-zusatz lib mit Doubles und convertierst deine floats in doubles und speicherst sie in solcher form. Dann übergibst du dem gluTessVertex den Pointer darauf.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
äh sorry das versteh ich gerade nich ganzDarkDragon hat geschrieben: x_low.f
x_high.f
y_low.f
y_high.f
z_low.f
z_high.f
Und dann nimmst du remi_meiers optimierer-zusatz lib mit Doubles und convertierst deine floats in doubles und speicherst sie in solcher form. Dann übergibst du dem gluTessVertex den Pointer darauf.
was ist jetzt x_low.f und x_heigh.f u.s.w.?
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Also, du speicherst die daten momentan in 3 Floats(32 bit = 4 byte), du benötigst aber 3 Doubles(64 bit = 8 byte), deshalb baust du jetzt einen Array auf mit dieser Struktur:nicolaus hat geschrieben:äh sorry das versteh ich gerade nich ganz![]()
was ist jetzt x_low.f und x_heigh.f u.s.w.?
Code: Alles auswählen
x_low.f
x_high.f
y_low.f
y_high.f
z_low.f
z_high.fAngenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.