2010-11-14 4 views
2

J'ai quelques applications 3D en cours, et je me demandais, quelle est la meilleure façon de stocker des lignes et des triangles? À l'heure actuelle, j'ai des lignes comme un tableau de vecteurs typedef en tant que tels:Meilleur moyen (et le plus rapide) de stocker des triangles et des lignes en C++?

typedef struct 
{ 
    float x, y, z; 
} 
Vector 

Vector line[2];

Maintenant, je pouvais le faire comme ceci:

 
typedef struct 
{ 
    Vector start, end; 
} 
Line 

Line lineVar; 

visages pourraient être similaires:

 
typdef struct 
{ 
    Vector v1, v2, v3; 
} 

Face faceVar; 

Ma question est la suivante: existe-t-il un moyen meilleur ou plus rapide de stocker des lignes et des visages? Ou est-ce que je le fais bien?

Merci,

James

Répondre

2

Qu'est-ce que vous avez est à peu près la façon dont les vecteurs sont représentés dans les programmes informatiques. Je ne peux pas imaginer d'autre moyen de le faire. Ceci est parfaitement bien:

typedef struct 
{ 
    float x, y, z; 
} Vector; 

(. DirectX stores vector components like this, en passant)

Cependant, les programmes intensifs 3D ont généralement l'indice des visages dans un tableau de vecteur pour économiser de l'espace puisque les mêmes points apparaissent souvent sur différents visages d'un modèle 3D:

typedef struct 
{ 
    int vectorIndex1, vectorIndex2, vectorIndex3; 
} Face; 
+0

Merci :-) Tout ce que je avais besoin – Bojangles

+0

@JamWaffles: Je dois souligner que les visages sont généralement représentés par des indices vectoriels au lieu des vecteurs eux-mêmes - voir mon édition. –

+0

Merci pour cela. Je suis juste en train de jouer avec de minuscules démos de maths en ce moment - en écrivant de petits progs snippet pour m'assurer que tous les composants de l'application finale (un jeu) fonctionnent correctement. Je vais charger des modèles à partir d'un fichier, qui aura plusieurs points au même endroit, donc je vais certainement chercher à supprimer les doublons - merci pour l'inspiration boost de vitesse! – Bojangles

Questions connexes