Qual é o algoritmo para armazenar os pixels em uma espiral em JS?
-
19-08-2019 - |
Pergunta
Qual é o algoritmo para armazenar os pixels em uma espiral em JS?
Solução
http://www.mathematische-basteleien.de/spiral.htm
var Spiral = function(a) {
this.initialize(a);
}
Spiral.prototype = {
_a: 0.5,
constructor: Spiral,
initialize: function( a ) {
if (a != null) this._a = a;
},
/* specify the increment in radians */
points: function( rotations, increment ) {
var maxAngle = Math.PI * 2 * rotations;
var points = new Array();
for (var angle = 0; angle <= maxAngle; angle = angle + increment)
{
points.push( this._point( angle ) );
}
return points;
},
_point: function( t ) {
var x = this._a * t * Math.cos(t);
var y = this._a * t * Math.sin(t);
return { X: x, Y: y };
}
}
var spiral = new Spiral(0.3);
var points = spiral.points( 2, 0.01 );
plot(points);
Implementação de amostra em http://myweb.uiowa.edu/timv/spiral.htm
Outras dicas
Existem alguns problemas com esta pergunta. A primeira é que você não está realmente sendo específico sobre o que está fazendo.
1) O JavaScript não é realmente um meio de armazenamento, a menos que você queira transmitir os pixels usando o JSON; nesse caso, você pode querer reformular para declarar explicitamente isso.
2) Não há menção de como você espera que a espiral pareça - estamos falando de uma espiral solta ou de uma espiral apertada? Monocolor ou um gradiente ou uma série de cores? Você está olhando para uma espiral curva ou retangular?
3) Qual é o objetivo final aqui? Você está procurando desenhar a espiral diretamente usando JS ou está transmitindo para outro lugar?