Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

the[V]oid

Alter Hase

  • »the[V]oid« ist der Autor dieses Themas

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

1

09.07.2007, 23:44

Würfel-Seiten teilen

Hallo, also es geht um folgendes Problem:

Ich habe einen Würfel, gegeben durch 8 Vertices. Nun brauche ich eine Methode, die in der Lage ist, alle Seiten des Würfels in kleinere Quadrate zu teilen. Als Parameter müsste sie einen Zahlenwert entgegennehmen können, der angibt, in wie viele Teile jede einzelne Seite des Würfels geteilt werden soll. Ich hoffe das war verständlich ^^

Mein Problem ist nun genau genommen das, das ich auf keinen Algorithmus komme, der entsprechende Vertex- und Index-Daten liefern würde. Hat vieleicht jemand eine Idee?

Also ich bin schon so weit, dass ich berechnen kann, wie viele Vertices und Quadrate ich am Ende insgesamt haben müsste... Aber das Bestimmen der Position der einzelnen Vertices sowie der Indices ist das, wofür ich keine Lösung finde, wobei Vertices noch das kleinere Problem sind: Ich könnte dreimal (für die beiden jeweils gegenüberliegenden Seiten) ein Punktegitter errechnen, da der Abstand zweier Vertices ja bekannt ist. Aber wie ich dann auf die Indices kommen soll, ist mir ein Rätsel :roll:

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

2

10.07.2007, 00:22

Sicher, dass du in kleinere Quadrate und nicht in kleinere Vierecke / Dreiecke oder sonstwas teilen willst? weil für Quadrate sollte es eigentlich ziemlich einfach sein, man muss nur beachten, dass die Menge der 'Unterquadrate' immer quadratisch (1; 4 ; 9 ; 16 ; 25 ; ...) sein muss um flächenmäßig der ganzen Würfelseite zu entsprechen.

the[V]oid

Alter Hase

  • »the[V]oid« ist der Autor dieses Themas

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

3

10.07.2007, 01:14

Doch, ich meine wirklich Quadrate ^^ Wie gesagt, das Problem is vorallem, das mir unklar ist, wie ich die Index-Daten generieren soll.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

10.07.2007, 12:30

du kennst ja die 6 seitenflächen des würfels und es ist dir bekannt welche vertices welche fläche aufspannen. nachdem du die 4 eckpunkte jeder fläche kennst, brauchst du ja nur in zwei verschachtelten schleifen diese fläche in ein gitternetz zu unterteilen.

ich würds mal so in der art probieren (p1 bis p4 sind die eckpunkte des quads im uhrzeigersinn! factor der unterteilungsfaktor)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void genQuad(const vec3& p1, 
              const vec3& p2, 
              const vec3& p3, 
              const vec3& p4, 
              int factor, 
              std::list<vec3>& vertices, 
              std::list<int>& indices)
{
  vec3 xstep = (p2 - p1) / factor;
  vec3 ystep = (p3 - p2) / factor;
  vec3 p;

  for( int j = 0; j < factor; ++j, p += ystep )
    for( int i = 0; i < factor; ++i, p += xstep )
      vertices.push_back(p);

  for( int j = 0; j < factor - 1; ++j )
    for( int i = 0; i < factor - 1; ++i )
    {
      int index = j * (factor + 1) + i;
      indices.push_back(index);
      indices.push_back(index + factor + 2);
      indices.push_back(index + factor + 1);
      indices.push_back(index);
      indices.push_back(index + 1);
      indices.push_back(index + factor + 2);
    }
}

Werbeanzeige