【问题标题】:Why does positive Y axis goes down, positive X axis go right?为什么Y轴正向下,X轴正向右?
【发布时间】:2015-11-15 07:10:57
【问题描述】:

在写这样的代码时,为什么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);
}

【问题讨论】:

    标签: android


    【解决方案1】:

    请注意,Android 屏幕中的原点(0,0) 位于屏幕的左上角。因此,当您向y axis 添加值时,对象会向下移动,而减去值时,对象会向上移动。

    在 Android 设备中:

     Origin
     |
     V
     *-------------------------------
     | ----> X axis                  |
     | |                             |
     | |                             |
     | V Y-axis                      |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
     |                               |
      -------------------------------
    

    可能的历史:

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

    更多参考可以参考here

    转换

    但是,您可以使用Canvas.setMatrix() 在android 中进行坐标转换。

    您可以使用 using 翻转您的Canvas

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

    将其移动到正确的位置。

    您可以参考here进行改造。

    【讨论】:

    • 您在图表中切换了轴。
    • 糟糕!因为失误。谢谢。编辑了我的答案。
    【解决方案2】:

    这是寻址计算机显示器的常用方法。它可能源于视频内存从左上角逐行映射到屏幕,而这很可能是由于电子束以这种方式扫过旧 CRT 显示器的屏幕。

    您可以通过使用带有适当变换矩阵的Canvas.setMatrix() 将坐标系更改为更“数学”。为了创建“镜像”变换矩阵,使用 -1 作为缩放操作的参数(即matrix.setScale(0, -1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      相关资源
      最近更新 更多