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