从较小的矩形构造一个矩形

Posted

技术标签:

【中文标题】从较小的矩形构造一个矩形【英文标题】:Constructing a rectangle from smaller rectangles 【发布时间】:2013-07-14 20:52:25 【问题描述】:

在过去的几个小时里,我一直在尝试从任意角度的较小矩形构造一个矩形;我想像这样http://i.stack.imgur.com/Ymakk.png

[ 黑线代表构造矩形的轮廓,红线代表构造它的三角形。红色矩形也必须完全笔直。 ]

显然,除非我在尝试渲染它时有一个非常小的增量,否则它看起来不会很明确,但最终产品希望看起来像一个预定角度的矩形。

屏幕设置为左上角为 (0, 0),右下角为 (1, 1)。我该怎么做?不是专门寻找实际代码、伪代码甚至解释,也许一些数学......会很棒!提前致谢。

【问题讨论】:

你能忍受你的代码在小提琴中吗?并请用更简单的方式解释一下,让更多人理解。 当然,我可以试试。嗯,基本上我无法旋转矩形,所以我假设我可以用较小的长而细的矩形构造一个矩形,以形成所需角度的矩形。为了制作一个定义好的矩形,这样你就看不到较小矩形的边缘,我打算让它们的 y 尺寸非常小。希望这张图片会有所帮助:imgur.com/UrJJtQx 这展示了组成它的更大的矩形,大到你可以看到它们的边缘创建了一些奇怪的阶梯矩形。构成它的矩形也不能旋转。 看到'javascript'标签,你是在浏览器中这样做的吗? 不,我不是。抱歉,我想说的是 【参考方案1】:

这里有一些几何图形:

如果你的矩形完全对齐,你可以画一个大矩形就赢了。

如果它在任何角度都被忽略了,你可以将线条表示为简单的方程式

y = m * x + c

在其中插入两条边的 x 和 y 以计算 m 和 c(实际上是一个非常简单的过程),或者您可以计算 m = tan(angle)

然后你可以“只是”沿着 y 坐标走下去,通过将 y、c 和 m 值插入方程并求解 x,得到属于矩形的左右线上对应的 x 位置。

如果你看一下你的矩形图片,你会发现基本上有三个部分:第一部分从底部到左下边缘。它沿着长边向左走,并在左侧遇到一条边。之后你沿着两个短边向右,然后你遇到右上边缘并向上到左上角(当然你也可以从上到下这样做)

您需要仔细检查是否已到达左侧或右侧两条线之间的边缘,并在适当的时候切换 m 和 c 的值。

我认为这应该让您接近解决方案

【讨论】:

所以,基本上,在两条线上找到一个点,沿着它们的 y 轴工作,直到无法达到更高,然后切换到另外两条?边走边渲染矩形? 是的,听起来你按照我的意思理解它:) 搞定了。我忘了将此设置为我接受的答案。谢谢

以上是关于从较小的矩形构造一个矩形的主要内容,如果未能解决你的问题,请参考以下文章

您能否仅将较大的磁盘映像的较小矩形部分加载到内存中?

将长坐标和纬度坐标划分为子坐标(较小的正方形)?

如何使用 Python PIL 模糊图像的非矩形或圆形区域?

石英和剪裁区域

Cesium绘制点、线、面、圆、矩形

Android:将大位图放在小位图后面,大位图应形成小位图