Calcul C++ - Aide pour comprendre le calcul
Résolu
Bonjour,
Je fais un appel au secours car j'ai un petit souci de compréhension.
J'ai réalisé des composants graphiques sous Borland Builder C++. Le souci c'est que j'ai trouvé un code (ci-dessous) et que je ne comprends pas trop les calculs qui sont effectués. Si une personne pourrait m'apporter de l'aide ça serait sympathique, car je dois le présenter dans une semaine.
Ce code permet d'afficher une aiguille qui pivote selon les valeurs.
Voici une image du composant : http://img3.hostingpics.net/pics/648270boussole.png
Voici le code du calcul de l'aiguille :
Merci, Damien
Je fais un appel au secours car j'ai un petit souci de compréhension.
J'ai réalisé des composants graphiques sous Borland Builder C++. Le souci c'est que j'ai trouvé un code (ci-dessous) et que je ne comprends pas trop les calculs qui sont effectués. Si une personne pourrait m'apporter de l'aide ça serait sympathique, car je dois le présenter dans une semaine.
Ce code permet d'afficher une aiguille qui pivote selon les valeurs.
Voici une image du composant : http://img3.hostingpics.net/pics/648270boussole.png
Voici le code du calcul de l'aiguille :
// On calcule la position pour chaque point et on affiche la flèche. n = Degres*200/360; z = n/100*3.14159; u = (n+50)/100*3.14159; x0 = sin(z)*80; y0 = -cos(z)*80; x1 = -sin(z)*10; y1 = cos(z)*10; x2 = sin(u)*2; y2 = -cos(u)*2; x3 = -sin(u)*2; y3 = cos(u)*2; points[0] = Point(x1+130,y1+115); points[1] = Point(x2+130,y2+115); points[2] = Point(x0+130,y0+115); points[3] = Point(x3+130,y3+115); ImgBoussole->Canvas->Brush->Color = clRed; ImgBoussole->Canvas->Polygon(points, 3); // On dessine la flèche de la boussole. Canvas->Draw(0, 0, ImgBoussole);
Merci, Damien
A voir également:
- Calcul C++ - Aide pour comprendre le calcul
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
4 réponses
n est une variable allant de 0 à 200 suivant l'angle choisi.
z est la valeur de l'angle en radians
u c'est z + pi/2, c'est à dire l'angle plus l'angle droit
Ensuite, tu calcul à partir de l'angle les 4 points du polygone.
z est la valeur de l'angle en radians
u c'est z + pi/2, c'est à dire l'angle plus l'angle droit
Ensuite, tu calcul à partir de l'angle les 4 points du polygone.
Petites précisions : un point dans les coordonnées cartésiennes sont de la forme (r cos(t), r sin(t)) est un point situé sur le cercle de centre (0,0) et de rayon r, et situé sur la demi droite partant de (0,0) et formant un angle de t radians avec la droite horizontale dont les points appartiennent sont {(x,0), x > 0}.
https://upload.wikimedia.org/wikipedia/commons/8/8f/Unit_circle.svg
Ainsi x0 est sur le cercle de centre (0,0) et de rayon 80, x1 sur le cercle de centre (10,10) et de centre 0,0 etc... Ici dans le code que tu as récupéré, le cos est transformé en +/-sin (et inversement) ce qui revient à ajouter ou à soustraire un angle de pi/2 (un angle droit, soit 90°). En effet cos(t+pi/2) = sin(t), cos(t + 3pi/2) = -sin(t) etc...
Les points (x0,y0), (x1,y1)... sont donc tous positionnés sur un cercle dont le centre est (0,0) respectivement de rayon 80, 10, 2 et 2.
Si tout ça te rappelle de lointains souvenirs de trigonométrie mais que ça reste flou, lis cette page :
https://fr.wikipedia.org/wiki/Cercle_unit%C3%A9
Les coordonnées des points sont obtenus en faisant une translation de (x0,y0), (x1,y1)... de 130 sur l'axe des abscisses et de 115 sur l'axe des ordonnées, ce qui revient à placer ces points sur des cercles de centre (130,115) de rayon 10, 2, 80 et 2.
Ces quatres points correspondent aux coins du polygones rouges sur ton image. En espérant que c'est plus clair ;-)
Bonne chance
https://upload.wikimedia.org/wikipedia/commons/8/8f/Unit_circle.svg
Ainsi x0 est sur le cercle de centre (0,0) et de rayon 80, x1 sur le cercle de centre (10,10) et de centre 0,0 etc... Ici dans le code que tu as récupéré, le cos est transformé en +/-sin (et inversement) ce qui revient à ajouter ou à soustraire un angle de pi/2 (un angle droit, soit 90°). En effet cos(t+pi/2) = sin(t), cos(t + 3pi/2) = -sin(t) etc...
Les points (x0,y0), (x1,y1)... sont donc tous positionnés sur un cercle dont le centre est (0,0) respectivement de rayon 80, 10, 2 et 2.
Si tout ça te rappelle de lointains souvenirs de trigonométrie mais que ça reste flou, lis cette page :
https://fr.wikipedia.org/wiki/Cercle_unit%C3%A9
Les coordonnées des points sont obtenus en faisant une translation de (x0,y0), (x1,y1)... de 130 sur l'axe des abscisses et de 115 sur l'axe des ordonnées, ce qui revient à placer ces points sur des cercles de centre (130,115) de rayon 10, 2, 80 et 2.
Ces quatres points correspondent aux coins du polygones rouges sur ton image. En espérant que c'est plus clair ;-)
Bonne chance