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 を使用して楕円を描画し、指定した正確な座標で楕円を描画するにはどうすればよいですか? 理想的には、楕円が長方形に含まれている場合、楕円の原点が左上隅にあることを意味します。