我无法放大我的应用程序。我的应用程序的目的是在简单的 2D 视图中显示计划,因此它使用正交投影。由于数据本身和矩阵是浮点数,因此在放大时会导致很大的变形,因为视口的比例(宽度/高度)与屏幕像素比例变得非常不同。
这是投影矩阵的计算:
Matrix.orthoM(thisProjectionMatrix, 0, viewportLeft.floatValue(), viewportRight.floatValue(),
viewportBottom.floatValue(), viewportTop.floatValue(), viewportNear, viewportFar);
当我缩放时,以下代码会计算 viewportLeft、viewportRight、viewportBottom 和 viewportTop:
public void zoomDrawing(int zoom_IN_OR_OUT)
{
double zoomfactor = 0.2;
double deltaheight;
double deltawidth;
double screenratiopixels = (double) getScreenWidthPixels() / getScreenHeightPixels();
double screenratiorealcoordsbeforezoom = (viewportRight - viewportLeft)/(viewportTop - viewportBottom);
deltaheight = zoomfactor * ((viewportTop - viewportBottom)+(viewportRight - viewportLeft))/2;
deltawidth = deltaheight * screenratiopixels;
if (zoom_IN_OR_OUT == ZOOM_IN)
{
viewportLeft += deltawidth;
viewportRight -= deltawidth;
viewportBottom +=deltaheight;
viewportTop -= deltaheight;
}
else if (zoom_IN_OR_OUT == ZOOM_OUT)
{
viewportLeft -= deltawidth;
viewportRight += deltawidth;
viewportBottom -=deltaheight;
viewportTop += deltaheight;
}
double screenratiorealcoordsafterzoom = (viewportRight - viewportLeft)/(viewportTop - viewportBottom);
Log.v("zoom", "difference in ratio: " + "\t" + Double.toString(screenratiopixels-screenratiorealcoordsafterzoom ));}
我在最后一行计算的那个差异在我放大时变得越来越大。有没有人知道如何解决这个问题,或者给我一个大致的方向?提前致谢!