0

我无法放大我的应用程序。我的应用程序的目的是在简单的 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 ));}

我在最后一行计算的那个差异在我放大时变得越来越大。有没有人知道如何解决这个问题,或者给我一个大致的方向?提前致谢!

4

0 回答 0