Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓游戏点画_Java_Android_Game Engine_Point - Fatal编程技术网

Java 安卓游戏点画

Java 安卓游戏点画,java,android,game-engine,point,Java,Android,Game Engine,Point,我在将点从世界坐标转换为屏幕坐标时遇到问题。我有一张地图,上面有一条轨迹,每5个点左右画一条轨迹。地图是2500x2000,我的画布(电话屏幕)是800x600px 我只想在手机屏幕上画出可见的轨迹,直到汽车移动。因此,我从我的点阵列(point.x>mapx)和(point.x

我在将点从世界坐标转换为屏幕坐标时遇到问题。我有一张地图,上面有一条轨迹,每5个点左右画一条轨迹。地图是2500x2000,我的画布(电话屏幕)是800x600px

我只想在手机屏幕上画出可见的轨迹,直到汽车移动。因此,我从我的点阵列(point.x>mapx)和(point.x 现在我需要将这些坐标转换回屏幕坐标来显示,这就是我被卡住的地方。例如,在地图的右侧,一个点可能是2200x1000,但我不能在这里绘制,因为屏幕只有800x600

有什么帮助吗

谢谢

从onDraw()方法调用的代码:

//循环轨迹数组
点-点;
对于(int i=0;imapx)&&(point.xmapy)&&(point.y

上面的工作,我可以得到的轨迹点,应该显示在屏幕上,但现在我需要转换它们,使他们在屏幕上画'大'。例如,如果地图被剪裁为20000100,并且这里有一个点,那么该点应该在屏幕上的0100处绘制。因此,我需要将这些第一个坐标转换为它们在屏幕上的正确位置。

您的问题并不完全清楚。如果两个坐标系的原点重合,那么我认为这只是对一个坐标系中的坐标应用适当的比例因子,以得到另一个坐标系中的比例坐标的问题。如果每个坐标系的原点不重合,则还需要应用变换和缩放


我认为这不是一个编程问题,而是一个数学问题。

请您发布您的代码。您好,我已经添加了代码,它可以正常工作。但我需要转换这些点,因为它们是在世界范围内,而不是屏幕范围内。谢谢,我认为你自己已经回答了这个问题,“规模”是最佳的词。是的,我知道这一点,但这一点我不明白,因此我发帖子!这只是一个例子,如果一个点超过一半,然后在+x上缩放,或者如果它在一半之前,然后在-x上向后缩放?是的,我认为你是对的。我最终得到了正确的点,但它们非常小,所以我需要在x和y方向上缩放它们,但这是我无法理解的。我猜它会是x+x/宽度或类似的东西,但这就是我被卡住的地方?
// loop track array
    Point point;
    for (int i = 0; i < this.trackPoints.size(); i++) {
        point = this.trackPoints.get(i);
        // if that piece of track is on the screen currently then add to
        // array
        if ((point.x > mapx) && (point.x < mapx + this.getWidth())
                && (point.y > mapy) && (point.y < mapy + this.getHeight())) {

            //translate point back to screen-coords
            Log.v("visibletrack", "adding point x = " + point.x + " point y = " + point.y);
            Log.v("visibledebugging", "mapmaxx = " + this.mapMaxX + " mapmaxy = " + this.mapMaxY);
            Log.v("visibledebugging", "scale x = " + scaleX + " scaley = " + scaleY);
            this.visibleTrackPoints.add(new Point((int)(point.x/scaleX), (int)(point.y/scaleY)));
        }
    }