Proportions de deux cercles [Résolu]

Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 11 janv. 2012 à 12:20 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
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
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 17:29
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
- 11 janv. 2012 à 12:51
0
Merci
Bonjour,

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

Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 11 janv. 2012 à 12:58
0
Merci
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
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 13:02
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
16 novembre 2018
- 11 janv. 2012 à 13:05
0
Merci
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
Commenter la réponse de NHenry
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
- 11 janv. 2012 à 13:40
0
Merci
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
Commenter la réponse de cs_cheyenne
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 11 janv. 2012 à 14:01
0
Merci
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
Commenter la réponse de cs_ShayW
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
- 11 janv. 2012 à 14:26
0
Merci
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
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 16:10
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 17:04
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 11 janv. 2012 à 17:21
0
Merci
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
Commenter la réponse de Cjvg
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 17:24
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 11 janv. 2012 à 17:26
0
Merci
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)
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 17:31
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 11 janv. 2012 à 17:52
0
Merci
La bonne formule est celle donnée par ucfoutu

Merci.
Commenter la réponse de Cjvg
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 11 janv. 2012 à 17:55
0
Merci
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.