Quadrillage dans un cercle [Résolu]

cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 12 avril 2017 à 12:11 - Dernière réponse : vb95 1502 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention
- 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
--
Afficher la suite 

7 réponses

Répondre au sujet
vb95 1502 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - Modifié par vb95 le 13/04/2017 à 14:40
0
Utile
1
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. 
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 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
Commenter la réponse de vb95
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 avril 2017 à 17:40
0
Utile
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
Commenter la réponse de cs_ShayW
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 17 avril 2017 à 11:35
0
Utile
3
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
vb95 1502 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 17 avril 2017 à 16:05
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
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention > vb95 1502 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 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.
vb95 1502 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention > cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 17 avril 2017 à 18:01
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
Commenter la réponse de cs_cheyenne

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.