从较小的矩形构造一个矩形
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 轴工作,直到无法达到更高,然后切换到另外两条?边走边渲染矩形? 是的,听起来你按照我的意思理解它:) 搞定了。我忘了将此设置为我接受的答案。谢谢以上是关于从较小的矩形构造一个矩形的主要内容,如果未能解决你的问题,请参考以下文章