POINT DANS UNE RÉGION

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 16 nov. 2005 à 23:27
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 mai 2006 à 09:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34672-point-dans-une-region

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 mai 2006 à 09:28
quite à vouloir faire du portable, en ce cas, autant faire une dll C, par exemple...
VB n'est pas un modèle de portabilité.
On pourrait, a la limite, voir ça comme un 'pseudo code', une implémentation possible de cet algoritme... sur ce point, cette source est interessante

les API mentionnées ci-dessus risque d'être présentes encore un bon moment, dans les dll de Windows...


Maintenant, si c'est pour utiliser en VB, et que le cadre le permet (comme la précision des coordonnées) il vaux mieux, question performance, utiliser les APIs
krissssss Messages postés 88 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 janvier 2007
10 mai 2006 à 22:55
Renfield,
Moins on est tenu à un système, mieux c'est ! ;-)
En utilisant les API le code est certe plus rapide et plus facil à écrire, cepandant il est difficilement adaptable à d'autres langages/environnements [et donc non portable].
Un code tel que présenté est facilement "portable".
De plus, je suis sûr qu'il existe des librairies super optimisées pour chaque problême développé sur le site donc...Voilà
;-)
cs_the_best Messages postés 212 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 6 avril 2006
21 nov. 2005 à 10:17
Pas mal ce code ! De temps en temps je cherchait de faire des truc sans ça et j'avait abandonné !
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
20 nov. 2005 à 13:48
Salut Renfield et Asimengo,

J'ai amélioré le code de la fonction pour tenir compte de la bonne remarque d'Asimengo. Maintenant, on peut aussi savoir si le point est sur la frontière.

Je savais qu'ils existent des fonctions API destinées à cela, même si je ne suis pas un grand spécialiste des API. Néanmoins, il me semble qu'elles sont limitées à des variables long, donc à 2 147 483 647 et les fractions sont arrondies. C'est donc bien adapté à l'informatique, par exemple pour une application faisant intervenir les coordonnées de la souris... mais pas pour un pb de math pur. En clair, cette fonction utilise la précision des variables "Double". (donc plage plus importante, et arrondie à 16 décimales)... voilà, c'était un peu ma motivation, en plus qu'il n'existe pas sur VBF (sauf erreur) un code général pour traiter ce type de problème...

Amicalement,
Us.
cs_asimengo Messages postés 280 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 18 mars 2009
17 nov. 2005 à 14:55
Merci Renfield, tè un vrai cowboy plus rapide que lucky luke, c'est appréciable.

A+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 nov. 2005 à 09:34
je pense principalement à ces API là :

Private Const RGN_DIFF As Long = 4
Private Const RGN_OR As Long = 2

Private Declare Function CombineRgn Lib "gdi32.dll" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long

Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long

Private Declare Function PtInRegion Lib "gdi32.dll" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
cs_asimengo Messages postés 280 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 18 mars 2009
17 nov. 2005 à 09:16
C'est toujours bien de voir des petits programmes qui font les grandes choses, bonne continuation.

Je pense qu'il serait interessant de renvoyer des indicateurs plus précis:
1 = Dans la zone
-1 = Hors de la zone
0 = A la frontière
ceci n'est qu'un exemple

Neanmoins je suis aussi interessé par la solution de Renfield, s'il pouvait libeller toutes les fonctions API sur le sujet je suis preneur.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 nov. 2005 à 23:27
Pourquoi ne pas utiliser les fonctions API relatives aux régions.. ??

CreateRectRgn & Co (PtInRegion pour le test)
Rejoignez-nous