Proportions de deux cercles

Résolu
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017 - 11 janv. 2012 à 12:20
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 11 janv. 2012 à 17:55
Bonjour,

J'ai un projet qui représente graphiquement la superficie de deux pays.
J'utilise un composant shape (Cercle) de dimension FIXE pour afficher la superficie du premier pays.
Je souhaiterais afficher une seconde Shape représentant la superficie du second pays en respectant les proportions.

Exemple: La première shape (Width Height 2200) représente les Etats-Unis d'une superficie de 9.629.047 Km²
La seconde shape à afficher aux proportions représente la France d'une superficie de 551.695 Km²

Avez vous la formule pour calculer les dimensions Width et Height de la France

Par avance merci

16 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 17:29
Et je vois que tu ne développes pas sous VB.Net (la présente section), mais sous VB6 !

Alors regarde ce petit exemple bâclé avec vb6 (il "parle" de lui-même)
un projet neuf ==>> un shape1(0) sur le form form1 ===>>
Private Sub Form_Activate()
  Dim usa_surgace As Long, france_surface As Long, usa_shape As Shape, france_shape As Shape, pi As Double, k As Double
  pi = 3.14116
  usa_surface = 9629047
  france_surface = 551695
  Set usa_shape = Shape1(0)
  Set france_shape = Shape1(1)
  usa_shape.Move 0, 0, 2200, 2200
  Load Shape1(1)
  Set france_shape = Shape1(1)
  Shape1(1).Visible = True
  k = (Sqr(france_surface / pi)) / (Sqr(usa_surface / pi))
  diametre_france = usa_shape.Width * k
  france_shape.Move usa_shape.Left + usa_shape.Width + 1000, 0, diametre_france, diametre_france
  france_shape.Visible = True
End Sub




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
11 janv. 2012 à 12:51
Bonjour,

As-tu pensé à une simple règle de trois ?

Cheyenne
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 janv. 2012 à 12:58
Salut


si width height 2200
et s = 9629047
la france s = 551695 Km²

w = (551695/ 9629047) * 2200

comment as tu obtenu pour les usa width = 2200 ?
si la superficie est de
9629047 km2 le rayon (9629047/pi)^1/2
1750
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 13:02
Bonjour,

Euh ... j'ai vaguement l'impression de ce que toutes ces explications se traduisent finalement par un simple graphique de type camembert.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 janv. 2012 à 13:05
Bonjour,

Il s'agit d'une simple règle de trois :
551695*2200/9629047

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
11 janv. 2012 à 13:40
Bonjour,

Comme je le signifiais au départ, il s'agit en fait d'une simple règle de trois.

L'inversion des valeurs donnent des résultats bien sûr identiques, mais en bonne logique j'aurais écrit la formule ainsi :
(2200 / 9629047) * 551695

Ai-je tort ?

Je profite de ce post pour souhaiter à tous une très bonne année 2012.

Cheyenne
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 janv. 2012 à 14:01
Bonjour Cheyenne
non tu ne t'es pas trompé
le vrai problème c'est l'affichage sur l'écran
pour un cercle w = 2000 il faut un écran assez
grand et en plus il faut disposer
deux cercles deux pays
si il faut representer la chine et les usa
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
11 janv. 2012 à 14:26
Bonjour ShayW,

D'accord pour la dimension de l'écran, si notre ami travaille en pixels !
Mais Cjvg ne nous dit pas quel est le type de ScaleMode de sa Form.
Si il est en mode User avec un ScaleWidth de 20 ou 30000, le problème ne se pose plus.

Bonne journée à toi,

Cheyenne
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 16:10
Si l'on veut faire deux cercles représentant deux surfaces, c'est la première réponse de ShayW qui est correcte (necessité de passer par pi).

preuve :

s1 = 1000
s2 = 2000
pi = 3.14116
r1 = Sqr(1000 / pi)
r2 = Sqr(2000 / pi)

MsgBox "les rayons sont : & vbcrlf & " & r1 & vbCrLf & r2 & vbCrLf & _
"preuve des surfaces : " & vbCrLf & pi * (r1 ^ 2) & vbCrLf & pi * (r2 ^ 2)
MsgBox pi * (r1 ^ 2)


et l'on voit bien que r2 n'est pas le double de r1.

Et ceci sera toujours vrai, quelques puissent être les unités (scalemode)
Quant à s'assurer de ce que cela ne dépasse pas les limites de l'affichage possible, c'est encore un autre aspect et cet aspect-là se règle par l'arithmétique, au besoin.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 17:04
dit plus simplement (si usa_shape est le cercle représentant les USA :
usa_surface = 9629047
france_surface = 551695
pi = 3.14116
k = (Sqr(france_surface / pi)) / (Sqr(usa_surface / pi))
diametre_france = usa_shape.Width * k


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
11 janv. 2012 à 17:21
J'ai essayé toutes les formules qui m'ont été suggérées. Elles ne donnent pas à mon avis le bon résultat.
Pour les curieux, je joints les quelques instructions qui corroborent ce que je dis plus haut.

Le rapport entre les deux superficies est d'environ 17. Lorsque l'on regarde les deux cercles, le rapport ne correspond pas à la réalité. Sauf erreur de ma part.

Pour les curieux, ajoutez le code ci-dessous dans un projet (avec Shape1 et Shape2).

-------------------------------------------------------------------------------------------

Private Sub Form_Load()
Dim Ilong As Currency
Dim Pays1, Pays2 As String
Dim Super1, Super2 As Long
Dim Coul1, Coul2 As Long
'---------------------------------
Shape1(0).Height = 2200
Shape1(0).Width = 2200
Shape1(1).Height = 620
Shape1(1).Width = 620
'---------------------------------
Pays1 "Etats-Unis": Super1 9629047: Coul1 = 4210752 ' Shape1(0) .
Pays2 "France": Super2 551695: Coul2 = vbYellow ' Shape1(1) à calculer
'---------------------------------

'Ilong = Super1 / Super2 ' Rapport entre les 2 ~ 17 .

'Ilong = Super2 * Shape1(0).Width / Super1 ' 551695*2200/9629047 .
'Ilong = (Shape1(0).Width / Super1) * Super2 ' (2200 / 9629047) * 551695 .
Ilong = (Super2 / Super1) * Shape1(0).Width ' (551695/ 9629047) * 2200 .

Shape1(1).Height = Ilong
Shape1(1).Width = Ilong
Shape1(1).Move Shape1(0).Left + (Shape1(0).Width - Shape1(1).Width) / 2, Shape1(0).Top + (Shape1(0).Height - Shape1(1).Height) / 2
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 17:24
Je ne vois pas l'utilisation de Pi, dan le code que tu montres ===>> donc faux.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 janv. 2012 à 17:26
Bien vu Ucfoutu
si j'ai
S1 = pi * r1 ^2
S2 = pi * r2 ^2

S1/S2 = (pi * r1 ^2) /(pi * r2 ^2)
d'où
on simplifie pi
S1/S2 = r1^2 / r2^2

r1^2 = (S1/S2) * r2^2
r1 = r2* sqrt(S1/S2)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 17:31
et si cela te va ===>> dis-le et je déterminerai Pi plus précisément qu'avec une valeur en numérique (ici 3.14116)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
11 janv. 2012 à 17:52
La bonne formule est celle donnée par ucfoutu

Merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 janv. 2012 à 17:55
Bien
Alors remplace la ligne :
Pi = 3.14116
par celle-ci, bien plus exacte mathématiquement :
pi = 4 * Atn(1)



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous