我正在尝试使用 ShapeRenderer 渲染椭圆,并提出了以下部分解决方案:
void drawEllipse(float x, float y, float width, float height) {
float r = (width / 2);
ShapeRenderer renderer = new ShapeRenderer();
renderer.setProjectionMatrix(/* camera matrix */);
renderer.begin(ShapeType.Circle);
renderer.scale(1f, (height / width), 1f);
renderer.circle(x + r, y, r);
renderer.identity();
renderer.end();
}
这会在指定坐标处以正确的宽度和高度绘制一个椭圆;但是,似乎比例变换会导致圆在视口中平移,而我未能成功确定平移背后的数学原理。我正在使用 y-up 的正交投影,其中坐标映射到屏幕上的一个像素。我对OpenGL不是很熟悉。
如何使用 libgdx 绘制椭圆,并让它在我指定的确切坐标处绘制椭圆?理想情况下,这意味着如果椭圆包含在矩形中,则椭圆的原点位于左上角。