#java #android #math #graphics #opengl-es
#java #Android #математика #графика #opengl-es
Вопрос:
Я пытаюсь нарисовать несколько кругов на экране, используя OpenGL ES 1.5 для Android. Они рисуют, но я хочу иметь возможность вводить x = 300, y = 500, и это нарисует окружность с центром в этой координате (например, в (300,500) пикселе на экране). В настоящее время я рисую и перевожу круги, но это неточно, я не знаю, как получить это именно там, где я хочу: вот несколько неработающих кодов из моей последней попытки:
//doesn't take w/h ratio into consideration, not sure how to implement that
gl.glViewport(0, 0, windowWidth, windowHeight);
gl.glOrthof(0,windowWidth, 0, windowHeight, 1, 2);
GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);
//And for drawing a circle, with the desired x and y coordinates:
for (int j = 0; j amp;lt number_Triangles; j ) {
x = Math.cos(theta) xCoor;
y = Math.sin(theta) yCoor;
z = 1;
theta = 2 * Math.PI / (number_Triangles);
}
Комментарии:
1. «но это не точно»: что вы имеете в виду?
2. Координаты окружностей не совпадают с координатами x, y, которые я сгенерировал с помощью моего редактора уровней. Они были перекошены и смещены от центра, и я ищу точный контроль.
Ответ №1:
Если вы создаете 2D-графику, я бы рекомендовал gluOrtho2D (слева, справа, снизу, сверху). Таким образом, у вас есть точный контроль над тем, какие координаты будут отображаться на каждом краю вашего экрана.
Так, например, вы могли бы иметь:
gl.glViewport(0,0,windowWidth, windowHeight); GLU.gluOrtho2D(-2.0f, 2.0f, -2.0f, 2.0f);
для (int j = …..