为什么正Y轴向下,正X轴向右?

3

在编写这样的代码时,为什么y轴是倒置的,也就是说正值会使物体向下移动,而负值会使它向上移动?

 animation.update();

    if(up){
        dy -=1.1;

    }
    else{
        dy +=1.1;
    }

    if(dy>14)dy = 14;
    if(dy<-14)dy = -14;

    y += dy*2;
    dy = 0;
}

public void draw(Canvas canvas)
{
    canvas.drawBitmap(animation.getImage(),x,y,null);
}
2个回答

9
请注意,在Android屏幕上,原点(0,0)位于屏幕的左上角。因此,当您向y轴添加值时,对象会朝向底部移动,而当您减去值时,对象会向上移动。
在Android设备中:
 Origin
 |
 V
 *-------------------------------
 | ----> X axis                  |
 | |                             |
 | |                             |
 | V Y-axis                      |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
  -------------------------------

可能的历史:

在电视机作为屏幕使用时,屏幕空间计算就开始了。电视机的光栅枪也是从左上角开始,所以这被接受为原点。

更多信息请参见这里

转换:

但是,在安卓中可以使用Canvas.setMatrix()来进行坐标变换。

您可以使用以下方法翻转您的Canvas:

canvas.translate(0,canvas.getHeight());
canvas.scale(1, -1) 

将其移动到正确的位置。

您可以参考这里进行转换。


1
这是计算机显示器通常的寻址方式。它可能源自于视频内存从左上角开始逐行映射到屏幕,而这又很可能是因为旧的CRT显示器中电子束以这种方式扫描屏幕。
您可以使用适当的变换矩阵通过Canvas.setMatrix()更改坐标系统以使其更加"数学化"。为了创建一个"镜像"变换矩阵,请在比例操作中使用-1作为参数(即matrix.setScale(0, -1))。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接