Quadrillage dans un cercle

Résolu
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 12 avril 2017 à 12:11
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 17 avril 2017 à 18:01
Bonjour à Tous,

J'aurai besoin de savoir comment tracer un quadrillage dans un cercle avec Line(x1,y1)-(x2,y2).
Pour faire une croix ou tracer des rayons c'est facile mais je n'ai pas assez de notions en géométrie pour tracer un quadrillage. J'ai besoin également de connaitre l'angle des bouts de lignes inscrits dans le cercle, mais cela je sais le faire avec Atn() à placer dans le bon quadrant car, selon les besoins, l'angle quadrillage pourra varier. Le nombre de lignes du quadrillage est variable mais égal dans les deux axes.

Merci de bien vouloir me dépanner Bonne journée.

Cheyenne
--
A voir également:

3 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 13 avril 2017 à 14:40
Bonjour
Une piste pour ton problème ( dommage je ne fais que du VB Net )
Tu traces un cercle sur une feuille de papier
Tu traces un diamètre horizontalement : ce diamètre va nous servir de base pour les lignes verticales du quadrillage
En trigonométrie on considère que le rayon vaut 1 donc le diamètre vaut 2

Supposes qu'en vertical tu désires 5 lignes de quadrillage : donc il faut diviser ton diamètre en 6 portions et tu auras 7 points et chaque portion vaut 2/6 du rayon

-1 -0.66 -0.33 0 +0.33 +0.66 +1

Le point 0 est le centre du cercle

Le problème est de connaître la longueur d'une ligne de quadrillage qui passe par ces points en vertical

Prenons la ligne verticale qui passe par le point -0.33 ou + 0.33 : sa longueur est égale à 2 * sin(0.33) * rayon



il faut faire ainsi pour toutes les lignes verticales du quadrillage.
Pour les lignes horizontales du quadrillage c'est le cosinus qu'il faut prendre dans la formule
La formule devient
Line(PX - (cos(0.33) * rayon),PY)-(PX + (cos(0.33) * rayon),PY)


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
17 avril 2017 à 11:29
Bonjour vb95,,

Je te remercie pour tes explications très claires
En fait je ne savais pas quelle "unité" prendre pour chaque segment du rayon. On en apprend tous les jours et c'est tant mieux !

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
13 avril 2017 à 17:40
Bonjour
En cherchant dans mes archives ...
J'avais jadis dessiné un radar representé par un cercle quadrillé

radarbox est un picturebox
Private Sub DrawGrid()
Dim x1, x2, y1, y2 As Integer
Dim angle As Integer
Dim segment As Integer
segment = 3
centerx = Me.radarbox.Width / 2
centery = Me.radarbox.Height / 2
Me.radarbox.FillStyle = 0


Me.radarbox.Circle (centerx, centery), radiusradar, RGB(0, 0, 255)

For angle = segment To 180 - segment Step segment
x1 = centerx + (radiusradar) * Cos(DegreeToRad(angle))
y1 = centery + (radiusradar) * Sin(DegreeToRad(angle))
x2 = centerx + (radiusradar) * Cos(DegreeToRad(-angle))
y2 = centery + (radiusradar) * Sin(DegreeToRad(-angle))
Me.radarbox.Line (x1, y1)-(x2, y2), RGB(0, 0, 255)
Next angle
For angle = 90 - segment To -(90 - segment) Step -segment
x1 = (radiusradar) * Cos(DegreeToRad(angle)) + centerx
y1 = (radiusradar) * Sin(DegreeToRad(angle)) + centery
x2 = (radiusradar) * Cos(DegreeToRad(180 - angle)) + centerx
y2 = (radiusradar) * Sin(DegreeToRad(180 - angle)) + centery
Me.radarbox.Line (x1, y1)-(x2, y2), RGB(0, 0, 255)
Next angle
End Sub
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
17 avril 2017 à 11:35
Bonjour ShayW,

Merci pour ton code qui m'a permis de bien comprendre la façon de procéder en plus des explications de vb95.
C'est exactement ce que je cherchais à faire.

Cheyenne
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 17 avril 2017 à 16:06
Bonjour cs_Cheyenne

petite précision sur mes explications
Lorsque je disais sin(0.33) ou cos(0.33) il faut comprendre que c'est l'angle entre le rayon horizontal et le rayon qui va du centre du centre jusqu'au point de jonction entre le périmètre du cercle et la ligne en rouge . Ces 2 rayons forme l'angle correspondant .Cet angle ne fait pas 0.33 degrès ou radians ou autre
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
17 avril 2017 à 16:56
Rebonjour vb95,

Oui j'avais bien compris, mais merci quand même. Ce 0.33 correspond à la "largeur ou hauteur" d'un segment quand on décide d'en avoir 6. Si j'en veux 4 ce sera 2/4 soit 0.5 et 0.125 pour 16 segments, etc...

Bonne semaine.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017
Modifié le 17 avril 2017 à 18:02
Pas de souci
Bonne semaine pour toi aussi
Si c'est ok pour ton problème peux-tu mettre le post en résolu
Merci
0
Rejoignez-nous