Figure convexe a partir d'un nuage de point

boulacmoi Messages postés 10 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 4 juin 2009 - 18 mars 2006 à 14:40
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 - 19 mars 2006 à 11:43
Bonjour,
J'essaie de faire un petit programme qui me permettrait a partir d'un nuage de points créer dans une picture, de réaliser la figure convexe, donc il y a des points qui seront bon, et d'autre non

Alors en fait, j'emploie une méthode qui consiste a sélectionner comme premier point, le point extreme le plus en bas de ma picture, ensuite je calcul l'angle, par rapport a l'horizontal, que forme toutes les droites partant de mon premier point, jusqu'a chaque point, et la droite qui a l'angle le plus grand fait partie donc de la figure convexe, ensuite je passe au point que je viens de trouver, je recalcul les angles de toutes les droites ayant pour origine ce nouveau point et allant aux autre points, et la droite qui a le plus grand angle est la bonne

Donc j'ai un petit soucis pour l'instant, les angles que je calcul ne sont pas bon
pour ce faire, j'ai créer cette petite fonction

Function CalcAngle(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double
Dim angle, DimX, DimY As Double
vX = x2 - x1
vY = y1 - y2
angle = (Atn(vY / vX) * 180) / Pi
If vX < 0 Then angle = 180 + angle
If vY < 0 Then angle = angle - 180
If angle>pi then
CalcAngle = angle
End If

End Function

Donc voila, j'aurais voulu savoir d'où viens mon problème si vous savez et si vous avez une méthode plus simple, je suis preneur également

Merci

ps: peut être qu'il y a une API qui le fait, mais ça ne m'interesse pas, il faut absolument que j'ai un algo pour le faire

4 réponses

boulacmoi Messages postés 10 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 4 juin 2009
18 mars 2006 à 14:49
Oups, j'ai copier des trucs que j'avais en commentaire, et qui était faux dans ma fonction
je remet la bonne

Function CalcAngle(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double
Dim angle, DimX, DimY As Double
vX = x2 - x1
vY = y1 - y2
angle = (Atn(vY / vX) * 180) / Pi
CalcAngle = angle
End If

End Function
0
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
18 mars 2006 à 18:09
Salut !

Une méthode assez rapide consiste à exploiter le concept mathématique de déterminant. Je suis sûr que tu pourras trouver sur Internet des exemples 1. de déterminants (sauf si tu connais, mais comme je ne le sais pas...) 2. d'application des déterminants aux enveloppes convexes. En général cette méthode fonctionne bien.

Cordialement,
Cacophrène
0
boulacmoi Messages postés 10 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 4 juin 2009
18 mars 2006 à 23:28
Merci, je vais de se pas faire quelque recherche
0
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
19 mars 2006 à 11:43
Salut !

Va voir ma source sur http://www.vbfrance.com/code.aspx?ID=36614

Je t'ai fait un exemple

Cacophrène
0
Rejoignez-nous