Pergunta

Qual é o algoritmo para armazenar os pixels em uma espiral em JS?

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top