2009-03-12 7 views
2

Compte tenu d'un chemin exprimé comme un tableau de points 2d:à la liste Triangle (de # .NET/C)

Point[] path = new Point[4] 
{ 
    new Point(0,0), 
    new Point(10,0), 
    new Point(10,10), 
    new Point(0,10), 
}; 

... Ici, une boîte. Quelle est la meilleure façon de convertir ceci en une liste de triangles (qui remplissent le chemin) à utiliser dans une application 3D?

Étant donné que ce n'est qu'un exemple simple et que le chemin peut être assez complexe dans la réalité. Y a-t-il déjà quelque chose dans le framework, peut-être System.Drawing ou dans WPF qui pourrait vous aider?

Edit: (Après le commentaire de Samuel) Idéalement, I'l aiment être en mesure de traiter les polygones convexes et concaves, sinon le graphique devra être de beaucoup de polygones convexes manuellement ..

+0

Le chemin est-il un polygone convexe? Si c'est facile, sinon ce sera très difficile. – Samuel

+0

Idéalement, j'aimerais pouvoir traiter les polygones concaves et convexes. – Rob

+0

Rob, voir ma réponse ci-dessous. Il gérerait les deux, mais soyez un peu plus d'effort. Cependant, il faut faire très attention (au-delà de la plupart des algorithmes simples) pour gérer les polygones dégénérés. –

Répondre

5

Cela dépend de ce que le chemin consiste et comment il est créé.

S'il s'agit toujours d'un polygone convexe, vous pouvez créer très facilement un ventilateur triangulaire qui remplira la région.

Si ce n'est pas un polygone convexe, vous devrez probablement utiliser une forme de triangulation pour remplir le chemin. Il y a pas mal d'options disponibles. La plupart des exemples de code est en C ou C++, pas en C#, mais cela pourrait aider:

http://local.wasp.uwa.edu.au/~pbourke/papers/triangulate/morten.html

L'idée de base est de remplir les frontières extérieures et la routine de triangulation passera de nouveau le triangle correct indices requis pour votre application 3D.

Il n'y a rien dans le cadre qui fera cela pour vous.

Questions connexes