使用可能不正确顺序的2个坐标绘制矩形

时间:2017-03-21 14:28:31

标签: php

我有2个坐标,需要绘制一个矩形。我遇到的问题是,有时坐标是右上角左下角。当我使用这些协调时,它会绘制一个“镜像”矩形。我如何知道何时获得右上角和左下角坐标,然后如何“翻转”这些坐标以在正确的位置绘制矩形?  第一个例子是当我得到从右上角开始并向右下方的坐标时。第二个例子是当我得到从左上角和右下角开始的坐标时。

     ___________
    /|          |
   / |          |
  /  |          |
 /   |__________|

______
|\    |
|  \  |
|   \ |
|____\|

2 个答案:

答案 0 :(得分:2)

最简单的方法是将坐标分成单独的x和y值,代表矩形的每一行,然后将它们放回到表示角落的新点中。

伪代码:

function normalise(p1, p2):
    let x1 = p1.x
    let x2 = p2.x
    let y1 = p1.y
    let y2 = p2.y

    let topLeft = Point(min(x1, x2), min(y1, y2))
    let bottomRight = Point(max(x1, x2), max(y1, y2))

    return (topLeft, bottomRight)

此伪代码假定(0,0)是绘图区域的左上角(在2D计算机图形中很常见)。

答案 1 :(得分:0)

这里的建议意味着您不必担心这一点。

如果您的积分是(x1, y1)(x2, y2),则无论您是否提供了左上角和右下角,以下几点都位于矩形的角落,或者右上角和左下角:

(max(x1, x2), max(y1, y2))
(max(x1, x2), min(y1, y2))
(min(x1, x2), max(y1, y2))
(min(x1, x2), min(y1, y2))