double minX = Math.min(player1.x, player2.x) - 10;
double minY = Math.min(player1.y, player2.y) - 10;
double maxX = Math.max(player1.x, player2.x) + 10;
double maxY = Math.max(player1.y, player2.y) + 10;
double dx = maxX-minX;
double dy = maxY-minY;
double aspectRatio = dx / dy;
double WANTED_ASPECT_RATIO = (double)screenWidth/screenHeight;
if(aspectRatio < WANTED_ASPECT_RATIO){
double centerY = minY + dy*0.5;
double correction = dx*0.5 * WANTED_ASPECT_RATIO;
minY = centerY - correction;
maxY = centerY + correction;
}else{
double centerX = minX + dx*0.5;
double correction = dy*0.5 / WANTED_ASPECT_RATIO;
minX = centerX - correction;
maxX = centerX + correction;
}
glOrtho(minX, maxX, maxY, minY, -1, 1);
COMPLETELY UNTESTED. IF IT WORKS, I’LL BE SURPRISED.