Изображение исчезает при вращении в обработке

Я использую язык Processing для небольшой игры, но у меня проблемы с изображениями и вращением. Мой спрайт отображается нормально, если я не применяю к нему вращение, но полностью исчезает, если его повернуть. Вот код вращения:

void display(boolean alternate) {
    pushMatrix();
    if(!isHead && !isTail && alternate) rotate(radians(180));
    rotate(radians(90*direction));
    image(snake, x, y, linkSize, linkSize);
    popMatrix();
}

Когда direction равно 0 или alternate истинно, а direction равно 2, отображается изображение. В противном случае изображение не отображается. Я не уверен, имеет ли это значение или нет, но змея — это изображение .png с альфа-прозрачностью. Объявление для змеи snake = loadImage("SnakeLink.png");.


person LoveAndCoding    schedule 09.07.2011    source источник


Ответы (1)


Вы фактически вращаете изображение из его исходного положения (верхний левый угол), поэтому оно исчезает с экрана. Вы должны перевести в центр изображения, повернуть, перевести обратно в исходное положение, а затем отобразить его.

translate(image.width/2, image.height/2);
rotate(radians);
translate(-image.width/2, -image.height/2);
person Roger Sodré    schedule 09.07.2011
comment
Итак, если я пытаюсь поместить верхний левый угол изображения в координаты (x, y) в окне, я делаю это, а затем рисую изображение в x, y? - person LoveAndCoding; 10.07.2011
comment
Вы можете рисовать в x, y или перевести (x, y) и просто рисовать. Переводить перемещает происхождение, весь мир. Чтобы правильно повернуть объект вокруг его центра, вы должны перевести мир в центр, повернуть его, а затем перевести обратно. - person Roger Sodré; 13.07.2011