【问题标题】:Starting point in coordinate systems坐标系中的起点
【发布时间】:2012-07-11 15:37:40
【问题描述】:

我有以下 php 代码:

<?php

$image = imagecreatefrompng("captcha_background.png");

$imgcolor = imagecolorallocate($image, 0, 0, 0);

imagesetthickness($image, 2);

imageline($image, 0, 25, 40, 90, $imgcolor);

?>

“imageline”方法在我的图像上从坐标 0 (x) 25 (y) 到 40 (x) 90 (y) 绘制一条直线。

结果如下图:

我感到困惑的是在 php.ini 中使用坐标系时底部和顶部的反转。 通常 0(起点)会在左下角,但是在“imageline”方法中分配坐标时,0(起点)位于左上角?

预期结果:

(图像为 300x100 像素)

有人能解释一下为什么会这样吗?

【问题讨论】:

  • 为什么?因为那是计算机绘图使用多年的坐标系。
  • 看起来和你描述的完全一样:坐标从左上角开始。

标签: php coordinate-systems


【解决方案1】:

这不是数学图表。开发中使用的典型坐标系(据我所知)是右下角的第一象限。也就是说,0x0 在左上角。这适用于所有具有宽度和高度的 html 元素(元素向下,它们不会向上)。

动机似乎是这样一个事实,即在不知道图像的绝对高度的情况下很难判断您必须使用多少高度,您可能在任何给定时间都不知道,并且可能会经常变化。

【讨论】:

    【解决方案2】:

    GD中坐标是这样定义的,不用担心。

    http://www.php.net/manual/en/function.imagedashedline.php

    y1:左上y坐标0,0为图像左上角。

    【讨论】:

      【解决方案3】:

      我相信这是 GD 图像库的标准,因为它们将自然原点定义为左上角。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多