boulacmoi
Messages postés10Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 4 juin 2009
-
18 mars 2006 à 14:40
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDerniè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
boulacmoi
Messages postés10Date d'inscriptionmercredi 1 novembre 2000StatutMembreDerniè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
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 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.