Kreis-Koordinaten-array in Javascript
Was ist der beste Weg, um die Koordinaten von einem Kreis in ein array in JavaScript? Bisher habe ich nur in der Lage war einen halben Kreis, aber ich brauche eine Formel, die gibt dem ganzen Kreis an zwei verschiedenen arrays: xValues
und yValues
. (Ich versuche, die Koordinaten, so kann ich die Animation eines Objekts entlang eines Pfades.)
Hier ist, was ich habe, so weit:
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));
}
}
InformationsquelleAutor VirtuosiMedia | 2008-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Schleife sollte wie folgt eingerichtet statt:
var xValues = [centerX]; var yValues = [centerY];
-- die Mitte des Kreises ist nicht ein Teil von Ihr.var phase = 2 * Math.PI * i / steps;
InformationsquelleAutor Ates Goral
Bresenham-Algorithmus ist wesentlich schneller. Sie hören es in Bezug auf das zeichnen von geraden Linien, aber es gibt eine form des Algorithmus für Kreise.
Ob Sie, oder fahren Sie mit der trig Berechnungen (die sind unglaublich schnell in diesen Tagen), Sie brauchen nur zu ziehen, 1/8 der Kreis. Durch austauschen von x,y kann man eine weitere 1/8. und dann das negative von x, von y, und - vertauscht und unswapped - erhalten Sie Punkte für alle den rest der Kreis. Eine Beschleunigung von 8x!
InformationsquelleAutor DarenW
Ändern:
:
Ein voller Kreis ist 2pi Radianten, und Sie sind nur gehen, um pi Bogenmaß.
InformationsquelleAutor Greg Hewgill
Wenn Sie bereits einen halben Kreis, einfach nur Spiegel, die Punkte zu Holen, die andere Hälfte
stellen Sie sicher, dass Sie dies in der richtigen Reihenfolge.
mehr speficically, für die andere Hälfte ersetzen Sie einfach die "
+ sin(...)
" mit einem "- sin(...)
"InformationsquelleAutor shoosh
Müssen Sie eine partielle Funktion zur Eingabe der Bogenmaß in cos und sin; daher nehmen Sie die Werte, die Sie bekommen, für ein Viertel oder die Hälfte des Kreises, und reflektieren Sie über die center-Punkte' - Achse, um Ihre volle Kreis.
Sagte, dass JavaScript sin und cos sind nicht ganz so wählerisch, also müssen Sie haben halbiert Ihr Rad oder etwas, ich würde es schreiben wie:
Bin ich davon ausgegangen, dass aus welchem Grund auch immer Sie wollte xValues[0] und yValues[0] centerX und centerY. Ich kann nicht herausfinden, warum Sie wollen, dass, wie Sie übergebenen Werte in der Funktion bereits.
InformationsquelleAutor dlamblin
War ich in der Lage, es zu lösen, auf meine eigene, durch Multiplikation der Anzahl der Schritte von 2:
InformationsquelleAutor VirtuosiMedia