2013-07-14 45 views
0

在過去的幾個小時裏,我一直試圖從任何角度的小矩形構造一個矩形;我想像是這樣做的http://i.stack.imgur.com/Ymakk.png從較小的矩形構造一個矩形

[黑色線代表構造矩形的輪廓,紅色線代表構成它的三角形。紅色矩形也必須完全平直。 ]

很明顯,它看起來不是很明確,除非當我嘗試渲染它時有一個非常小的增量,但最終產品希望看起來像一個預定角度的矩形。

屏幕設置爲頂部左側角爲(0,0),底部爲右側爲(1,1)。我將如何做到這一點?不是專門尋找實際的代碼,僞代碼甚至是一個解釋,也許有些數學......會很棒!提前致謝。

+1

你可以忍受你的代碼在小提琴嗎? 並請以更簡單的方式解釋,以便更多人瞭解。 –

+0

當然,我可以嘗試。嗯,基本上我無法旋轉一個矩形,所以我認爲我可以從較小的長而薄的矩形構造一個矩形,以形成所需角度的矩形。爲了製作一個定義好的矩形,以便你看不到小矩形的邊緣,我將使它們的y尺寸變得非常小。希望這張圖片能夠幫到您:http://imgur.com/UrJJQQQQQ 這表明構成它的較大的矩形很大,您可以看到它們的邊緣創建一些奇怪的階梯形矩形。構成它的矩形也不能旋轉。 – lelcats

+0

看到'javascript'標籤,你是在瀏覽器中做這個嗎? – wwww

回答

0

這是一個有點形狀的你:

如果您的矩形完全一致,你可以只畫一個矩形大與您共贏。

如果它在任何角度輕視可言,你可以表達的行作爲簡單的公式

Y = M * X + C

其中插入兩個邊緣的x和y來計算m和c (實際上是一個非常簡單的程序),或者你可以計算出m = tan(角度)

然後,你可以「沿」y座標走,並獲得屬於通過將y,c和m值插入方程並求解x來計算矩形。

如果你看看你的矩形圖片,你可以看到基本上有三個部分:第一部分從底部到左下邊緣。它沿着左邊的長邊並在左邊遇到邊緣。之後,你沿着右邊的兩條短邊,然後你遇到右上邊緣並走到左上角(當然,你也可以從上往下做)

你需要小心檢查你是否已經到達左邊或右邊兩條線之間的邊緣,並在適當的時刻將m和c的值切換。

我認爲這應該讓你接近解決方案

+0

所以,基本上,在兩條線上找到一個點,沿着他們的y軸工作,直到我達不到更高,然後切換到另外兩個?隨着我走向呈現矩形? – lelcats

+0

是的,聽起來像你理解它的方式,我的意思是傳達它:) – timotimo

+0

得到它的工作。我忘了將其設置爲我接受的答案。謝謝 – lelcats