HTML 5 Canvas - вращение нескольких объектов вокруг собственного источника

Вы можете установить нулевую длину deque , чтобы сделать это:

with open("output.csv", "w") as f:
    writer = csv.writer(f)
    collections.deque(map(writer.writerow, data),0)

Это то же самое, что и рецепт itertools.consume (iterator, None). Он функционально исчерпывает итератор, не создавая список.

Вы также можете просто использовать рецепт потребления из itertools.

Но цикл более читабельный и Pythonic для меня, но YMMV.

0
задан NickersF 6 March 2019 в 08:34
поделиться

1 ответ

Вместо того, чтобы рисовать риты в (this.x, this.y), вы можете нарисовать их в 0,0 и перевести их в (this.x, this.y);

// author: Nicholas Fazzolari

var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var xCenterCanvas = innerWidth/2;
var yCenterCanvas = innerHeight/2;

// custom rectangle object
function RectangleCustom(x, y, w, h, color) {
    this.w = w;
    this.h = h;
    this.x = x;
    this.y = y;
    this.color = color;
    this.radians = (Math.PI/180) * 2; // change the last value to change speed
    this.rotation = 0;
 
    // draws a rectangle at given coordinates
    this.draw = function() {
        this.rotation += this.radians;
        ctx.save();
        ctx.fillStyle = this.color;
        ctx.translate(this.x, this.y);
        ctx.rotate(this.rotation);
        ctx.fillRect(0,0, this.w, this.h);
        ctx.restore();
    }
    
    
    this.update = function() {
         // animation updates
     }
}

// singleton rectangles
var bkgRectangle = new RectangleCustom(0, 0, innerWidth, innerHeight, "#212121");
var redRectangle = new RectangleCustom(xCenterCanvas - 64, yCenterCanvas - 64, 128, 128, "#F44336");

// main animation loop
function mainAnimationLoop() {
    // runs animation and clears the canvas each call
    requestAnimationFrame(mainAnimationLoop);
    ctx.clearRect(0, 0, innerWidth, innerHeight);
    
    bkgRectangle.draw();
    redRectangle.draw();
    
}

mainAnimationLoop();
<canvas></canvas>
[ 114]

0
ответ дан enxaneta 6 March 2019 в 08:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: