2012-03-28 194 views
0

我正在使用JavaScript繪製一幅畫布,並有四個座標繪製平行四邊形,分別稱爲A,B,C和D,從左上角,右上角,左下角,和右下角。漸變平行四邊形

一些座標的一個例子可能是:

A:(3,3)

B:(4,3)

C:(1,0)

d :(2,0)

我可以繪製平行四邊形就好,但我想用漸變填充它。我希望漸變從左到右填充,但匹配形狀的角度。我使用的庫(CAKE)需要漸變的開始和停止座標。我的停止和開始將在A和C之間的某個地方,並在B和D之間的中途結束。當然,這不是簡單的一半,因爲A,B,C和D的角度不是直角。因此,給出這些信息(座標),如何找到A - > C行上的點開始,B - > D行上的點停止?請記住,我正在用JavaScript做這件事,所以我有一些好的數學工具可供我計算。

+1

「形狀的角度」是什麼意思?底線的角度?頂線?中間某個地方? – Briguy37 2012-03-28 21:58:59

+0

我想你可以認爲它需要一條垂直於A線 - > C線的直線,而且我需要它將與A - > C相交的點(它將成爲開始點),以及它與相交線的位置B - > D(這將是停止)。 – lightningmanic 2012-03-28 22:28:41

回答

0

您在評論中指定的內容可以提供更多信息(例如,您需要指定垂直線的起始位置,因爲這會影響您的漸變),但我認爲它不會讓您得到您想要的。

相反,就拿下面,我認爲這是更接近你所追求的:

enter image description here

正如你看到的,讓梯度上述平行四邊形我們忽略了ACBD兩側並且使梯度相對於ABCD。你可以決定使用哪一對邊,但我可能會選擇長度,以便顯示在所有平行四邊形中保持一致(要麼是相對於一對較長邊的漸變,要麼是較短邊,您的選擇,但要親自我會走長邊)。

假設您選擇AB。垂直於AB的線的斜率是AB的斜率的倒數倒數,其爲(ax-bx)/(by-ay)(小心這裏除以零的情況!)。

接下來,您必須找到2個漸變點,這將是具有該斜率的任何線上的兩個適當點。一種選擇是要挑線通過一個去,用一個爲出發點,並用它與CD爲終點相交的點(你可以使用this page爲找出交集的指南點)。否則,請保持斜率,但根據自己的喜好調整點以獲得所需的坡度。

一旦你有了你的漸變點,插入它們,它是一塊CAKE!