Forum Liberty Basic France

Général » Les formules mathématiK quand ca part dans les maths...
Le 27/03/2020 à 16h47

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
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 ?
____________________
Yo !

MSN Web    
Le 27/03/2020 à 18h59

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2480
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
____________________
Roro

   
Le 27/03/2020 à 19h12

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 430
oui mais je me demande si une formule simplifié comme jai ecrit au dessus exist ^^
Si quelqu'un a une idée :D
____________________
Yo !

MSN Web    
Le 28/03/2020 à 01h21

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
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
  • 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 courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 24/04/2020 à 18h33

Libertynaute Actif

Groupe: Membre

Inscrit le: 17/12/2010
Messages: 124
Salut,

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 !"

   
Le 25/04/2020 à 12h02

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Merci pour l'info, c'est stocké dans un coin de mémoire pour une utilisation future :top
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Général » Les formules mathématiK quand ca part dans les maths...  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie