Trouver les coordonées de points sur un cercle

Le problème exposé dans ce sujet a été résolu.

Bonjour/Bonsoir,

Je cherche à obtenir les coordonnées de points sur un cercle de rayon donnée. En fait, je souhaite obtenir une forme d'abord sphérique constituée de points reliées les uns aux autres:

Image utilisateur

Il ne me reste plus qu'a déplacer certains de ces points pour obtenir des "déformations" un peu comme un œuf au plat, ou du slime. gif exemple

Voici les informations constantes auquel j'ai accès: rayon de base du cercle, largeur du plan (600 pixels), hauteur du plan (600 pixels), nombre de points ( de segmentations ) que je souhaite sur mon cercle.

Comment obtenir les coordonées X et Y de chaque point ? En faisant des recherche je suis tombé sur cet algorithme mais je ne suis pas sur que c'est ce qu'il me faut: https://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_cercle_d'Andres

Merci d'avance :)

+0 -0

Salut,

Je suis pas sûr d'avoir tout compris. Si tu veux juste $k$ points sur ton cercle, je propose les $(cos(\frac{2j\pi}{k}), sin(\frac{2j\pi}{k}))$ (pour tout $0 \le j < k$) ?

Cependant on dirait que tu as imposé un certain quadrillage (et donc que tu ne considères que les coordonnées de la forme $(nc, mc)$ pour un certain réel $c$ fixé). Dans ce cas ça revient à chercher les solutions entières de $n^2+m^2 = p$, à trouver un entier $p$ assez grand pour lequel on a au moins $k$ solutions entières. Tu peux déjà regarder algorithmiquement ce que ça donne.

Mon niveau est assez faible en Maths (je suis au lycée), et je ne suis pas sur d'avoir bien compris comment me débrouiller avec ça :'(

J'ai fais un "schéma" en code, je ne sais pas trop comment le compléter:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var largeurPlan = 600;
var hauteurPlan = 600;
var rayonCercle = 100;
var nombreDePoints = 10;

var centreCercle = {
    x: 350,
    y: 350
};

/*
doit contenir une liste de { x: number, y: number } répartis équitablement sur le cercle
*/
var points = [];

// enregistrement des coordonnées de chaque point
for (var i = 0; i < nombreDePoints; i++) {
    points[i] = "?"; // algorithme à compléter 
}

(c'est du javascript, j'utilise l'API canvas pour le dessin) Voici le sens des axes du plan (si jamais un calcul change ?): sens des axes

Si vous auriez la possibilité de m'aider un peu plus à partir de là, ça m'aiderait beaucoup ! Merci d'avance et désolé d'en demander autant, je suis vraiment perdu..

+0 -0

Bonsoir,

Tu es au lycée, tu as donc sûrement déjà fait un petit peu de trigonométrie, au moins le début. La façon sans doute la plus simple de placer un certain nombre de points à égale distance les uns des autres sur un cercle, c'est de choisir leur position sous forme d'angle.

Tous les points qui sont sur le bord du cercle ont la forme: x+rcos(a); y+rsin(a), avec x;y le centre, r le rayon, et a un angle entre 0 et 2pi. Si tu prends le cercle avec x=0, y=0 et r=1, alors tu retrouves cos(a); sin(a). Si tu fais courir a de 0 à 2pi, tu dessines le cercle trigonométrique.

Pour placer tes points au bord du cercle, il te faut maintenant choisir n valeurs de a comprises entre 0 et 2pi. Le plus simple est bien sûr 0, 2pi/n, 22pi/n, 32pi/n, 42pi/n, …, (n-1)2pi/n.

Si tu appliques la même chose en 3D sur une sphère, tu placeras des points qui se trouveront tous sur un équateur avec cette technique.

C'est exactement ce que Lucas84 a déjà dit dans la première partie de son message, mais c'est peut-être plus simple à comprendre de cette façon.

Edit: j'aimerais bien que cet imbécile de markdown n'interprète pas mes astérisques comme du gras

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte