I am attempting to render an ellipse using ShapeRenderer, and have come up with the following partial solution:
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(); } This draws an ellipse at the specified coordinates with the correct width and height; however, it appears that the scale transformation causes the circle to be translated in the viewport, and I have not been successful in determining the mathematics behind the translation. I am using an orthogonal projection with y-up where the coordinates map to a pixel on the screen. I am not very familiar with OpenGL.
How can I draw an ellipse using libgdx, and have it draw the ellipse at the exact coordinates I specify? Ideally, that would mean that the origin of the ellipse is located in the top-left corner, if the ellipse was contained in a rectangle.