Forum Liberty Basic France
• Index
Salut salut !
J'ai une question pour les pro des maths
pour créer une zone de selection ou de bloquage c'est assez simple de faire une ligne ou un carré/rectangle mais je me demande ... est-il possible de le faire pour un cercle ou une elypse ?
Par exemple pour selectionner dans un rectangle :
if Xxx > 20 and Xxx < 50 and Yyy > 10 and Yyy < 40 then goto [SELECTION]
Et pour un cercle ? une elypse ? quelle serait les lignes de code svp ?
J'ai une question pour les pro des maths

pour créer une zone de selection ou de bloquage c'est assez simple de faire une ligne ou un carré/rectangle mais je me demande ... est-il possible de le faire pour un cercle ou une elypse ?
Par exemple pour selectionner dans un rectangle :
if Xxx > 20 and Xxx < 50 and Yyy > 10 and Yyy < 40 then goto [SELECTION]
Et pour un cercle ? une elypse ? quelle serait les lignes de code svp ?
Possible qu'il faille faire ça dans une boucle pour explorer la surface avec du sinus
A noter qu'à JB/LB il faut parler en radians (avec du "180" (voir Google)
Mais en toute logique, que ce soit un rond ou une ellipse, on clique instinctivement en son centre (ou pas loin), et donc un carré pour le rond et un rectangle pour l'éllipse doivent très bien faire l'affaire
A noter qu'à JB/LB il faut parler en radians (avec du "180" (voir Google)
Mais en toute logique, que ce soit un rond ou une ellipse, on clique instinctivement en son centre (ou pas loin), et donc un carré pour le rond et un rectangle pour l'éllipse doivent très bien faire l'affaire
____________________
Roro
Roro
oui mais je me demande si une formule simplifié comme jai ecrit au dessus exist 
Si quelqu'un a une idée

Si quelqu'un a une idée

Oui : une visite à l'ami google
Sur ce coup-là, il est assez facile de trouver des résultats pertinents, même si, de prime abord, on imaginerait volontiers qu'une ellipse n'intéresse pas grand monde dans la vie courante.
Autrement, j'ai trouvé sur un forum une recette de cuisine qui semble fonctionner :
Il faut que les axes de l'ellipse soient parallèles aux axes de ton système, très probablement la fenêtre de ton appli
à moins que tu ne préfères la formule complète, extraite de cette [url=https://fr.wikipedia.org/wiki/Ellipse_(mathématiques)]page[/url] wiki : (*)
Code VB :
où là aussi, si le résultat de l'équation est inférieur à 1, ton point est dans l'ellipse.
Ceci dit, je ne suis pas matheux pour deux sous, mais faut bien passer par là dans nos projets...
(*) je n'arrive pas à obtenir un lien cliquable, peut-être à cause du "é" de mathématiques, ou c'est le forum qui fatigue...
Edité par Christophe Le 28/03/2020 à 01h25

Sur ce coup-là, il est assez facile de trouver des résultats pertinents, même si, de prime abord, on imaginerait volontiers qu'une ellipse n'intéresse pas grand monde dans la vie courante.
Autrement, j'ai trouvé sur un forum une recette de cuisine qui semble fonctionner :
Il faut que les axes de l'ellipse soient parallèles aux axes de ton système, très probablement la fenêtre de ton appli
- tu détermines les coordonnées du centre de l'ellipse
- tu prends le point dont tu cherche à déterminer s'il est dans l'ellipse
- tu lui retires les coordonnés du centre de l'ellipse
- tu divises la nouvelle coordonnée x du point par la dimension horizontale de ton ellipse
- tu divises la nouvelle coordonnée y du point par la dimension verticale de l'ellipse
- tu calcules la somme des carrés de x et y,
- et si cette somme est inférieure à 1, ton point est dans l'ellipse.
à moins que tu ne préfères la formule complète, extraite de cette [url=https://fr.wikipedia.org/wiki/Ellipse_(mathématiques)]page[/url] wiki : (*)
Code VB :
(((x-u)cos(theta)+(y-v)sin(theta)))^2/a^2+(((x-u)sin(theta)-(y-v)cos(theta)))^2/b^2=1
où là aussi, si le résultat de l'équation est inférieur à 1, ton point est dans l'ellipse.
Ceci dit, je ne suis pas matheux pour deux sous, mais faut bien passer par là dans nos projets...
(*) je n'arrive pas à obtenir un lien cliquable, peut-être à cause du "é" de mathématiques, ou c'est le forum qui fatigue...
Edité par Christophe Le 28/03/2020 à 01h25
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Salut,
Ci-après les fonctions de collisions Cercle et Ellipse réalisées par Andy AMAYA :
Code VB :
Code VB :
@++
Edité par joan74 Le 24/04/2020 à 18h53
Ci-après les fonctions de collisions Cercle et Ellipse réalisées par Andy AMAYA :
Code VB :
Function pnc(px, py, ax, ay, ar) '==================================================================================== ' Function "Point In Circle" '==================================================================================== '======================================= ' Title: Point In Circle Function ' Programmer: Andy Amaya ' Date: 2009.07.01 ' Version: 1.000 '======================================= ' This function checks to see if the point (px,py) is inside the specified circle. ' ' If the point is inside the circle a value of 1 is returned. ' ' If the point is not inside the circle a value of 0 (zero) is returned. '==================================================================================== ' px = the X coord of the point in question ' py = the Y coord of the point in question ' ax = X coord of center of circle "a" ' ay = Y coord of center of circle "a" ' ar = radius of circle "a" ' '==================================================================================== pnc = (((px-ax)*(px-ax) + (py-ay)*(py-ay)) <= ar*ar) End Function
Code VB :
Function pne(px, py, ex, ey, ew, eh) '==================================================================================== ' Function "Point In Ellipse" '==================================================================================== '======================================= ' Title: Point In Ellipse Function ' Programmer: Andy Amaya ' Date: 2009.07.01 ' Version: 1.000 '======================================= ' This function checks to see if the point is inside the specified ellipse. ' ' If the point is inside the ellipse a value of 1 is returned. ' ' If the point is not inside the ellipse a value of 0 (zero) is returned. '==================================================================================== ' px = the X coord of the point in question ' py = the Y coord of the point in question ' ex = X coord for center of ellipse ' ey = Y coord for center of ellipse ' ew = width of ellipse ' eh = height of ellipse ' '==================================================================================== 'This format is fastest and can be 'inlined' for maximum speed pne = ((px-ex)*(px-ex)/((ew/2)*(ew/2))+(py-ey)*(py-ey)/((eh/2)*(eh/2))<1) '==================================================================================== 'This format is more readable ... but slightly slower 'dx = (px - ex) * (px - ex) 'dy = (py - ey) * (py - ey) 'ew2 = (ew/2)*(ew/2) 'eh2 = (eh/2)*(eh/2) 'pne = (dx/ew2 + dy/eh2 < 1) End Function
@++
Edité par joan74 Le 24/04/2020 à 18h53
____________________
"L'urgent c'est fait ! L'impossible est en cours... pour les miracles, merci de prévoir un délai supplémentaire !"
"L'urgent c'est fait ! L'impossible est en cours... pour les miracles, merci de prévoir un délai supplémentaire !"
Merci pour l'info, c'est stocké dans un coin de mémoire pour une utilisation future

____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie