Cercle de coordonnées à un tableau en Javascript
Quelle est la meilleure façon d'ajouter les coordonnées d'un cercle à un tableau en JavaScript? Jusqu'à présent, j'ai seulement été en mesure de faire un demi-cercle, mais j'ai besoin d'une formule qui renvoie l'ensemble du cercle de deux tableaux: xValues
et yValues
. (Je vais essayer d'obtenir les coordonnées afin que je puisse animer un objet le long d'un chemin.)
Voici ce que j'ai à ce jour:
circle: function(radius, steps, centerX, centerY){
var xValues = [centerX];
var yValues = [centerY];
for (var i = 1; i < steps; i++) {
xValues[i] = (centerX + radius * Math.cos(Math.PI * i / steps-Math.PI/2));
yValues[i] = (centerY + radius * Math.sin(Math.PI * i / steps-Math.PI/2));
}
}
source d'informationauteur VirtuosiMedia
Vous devez vous connecter pour publier un commentaire.
Votre boucle doit être mis en place comme ceci à la place:
var xValues = [centerX]; var yValues = [centerY];
-- le centre du cercle n'est pas une partie.Bresenham de l'algorithme est plus rapide. Vous entendez parler d'elle par rapport à tracer des lignes droites, mais il y a une forme de l'algorithme pour les cercles.
Si vous l'utiliser ou continuer avec le trig calculs (qui sont hyper rapide de ces jours) - vous avez seulement besoin de tirage au sort 1/8e de cercle. En échangeant x,y, vous pouvez obtenir une autre 1/8e, puis le négatif de x, de y et de deux échangés et unswapped - vous donne des points pour tout le reste du cercle. Une accélération de 8x!
Changement:
:
Un cercle complet est 2pi radians, et vous allez seulement à pi radians.
Si vous avez déjà un demi-cercle, juste le miroir de points pour obtenir l'autre moitié
assurez-vous de le faire dans le bon ordre.
plus speficically, pour l'autre moitié, il vous suffit de remplacer le "
+ sin(...)
" avec un "- sin(...)
"Vous avez besoin d'utiliser une fonction partielle à l'entrée des radians en cos et sin; donc prendre les valeurs que vous obtenez pour un quart ou la moitié du cercle, et les refléter sur le centre des points de l'axe pour obtenir l'intégralité de votre cercle.
Que dit le JavaScript de sin et cos ne sont pas tout à fait aussi difficile, donc vous devez avoir réduit de moitié votre radian ou quelque chose; je vais l'écrire comme:
Je suppose que, pour quelque raison que ce soit vous voulais xValues[0] et yValues[0] pour être centerX et centerY. Je ne peux pas comprendre pourquoi vous voulez que, comme ce sont des valeurs passées dans la fonction déjà.
J'ai été en mesure de le résoudre sur mon propre en multipliant le nombre d'étapes par 2: