3D куб с использованием холста. Нужно небольшое улучшение

Я сделал этот 3D-куб, используя следующий код

Matrix mMatrix = canvas.getMatrix();

canvas.save();
camera.save();
camera.rotateY(-angle);
camera.getMatrix(mMatrix);
mMatrix.preTranslate(-width, 0);
mMatrix.postTranslate(width, 0);
canvas.concat(mMatrix);
canvas.drawBitmap(bmp1, 0, 0, null);
camera.restore();
canvas.restore();

camera.rotateY(90 - angle);
camera.getMatrix(mMatrix);
mMatrix.preTranslate(-width, 0);
mMatrix.postTranslate(width2, 0);
canvas.concat(mMatrix);
canvas.drawBitmap(bmp2, width, 0, null);

Вот что это дает

введите здесь описание изображения

Но мне нужно

введите здесь описание изображения

Это потому, что когда камера поворачивает изображения, часть изображения скрывается. Например, введите здесь описание изображения

Но я думаю, что это можно сделать.


person timemanx    schedule 30.08.2012    source источник
comment
не могли бы вы поделиться кодом для создания куба   -  person Reprator    schedule 22.10.2017


Ответы (1)


На самом деле это было довольно легко. Изображение должно было быть перемещено на половину его ширины/высоты вдоль оси, по которой оно вращалось.

Итак, следующие изменения сделали это

mMatrix.preTranslate(-width, -height / 2);
mMatrix.postTranslate(width, height / 2);
person timemanx    schedule 05.09.2012
comment
@Vivekanand Код в вопросе. Используйте его после внесения изменений в ответ. - person timemanx; 24.03.2013
comment
Прошу прощения за такую ​​неформальность, это из-за отчаянной ситуации. Мне действительно не нужен полный код, какой-то учебник о том, как выполняется реализация, будет оценен по достоинству, спасибо - person Vivekanand; 25.03.2013
comment
@ShubhadeepChaudhuri, не могли бы вы поделиться кодом для создания 3D-куба? - person Reprator; 22.10.2017