2011-01-20 63 views
0

我有一個起點(x0,y0),一個終點(x2,y2)和一個斜率(在(x0,y0)和(x3,y3)之間的斜線)我想畫一個平行四邊形。如何繪製平行四邊形的2點和斜率

(x0,y0)  (x1,y1) 
    __________ 
    \   \ 
     \   \ 
     \_________\ 
    (x3,y3)  (x2,y2) 

有人可以告訴我該怎麼做嗎?或者提出一些算法或其他內容。

編輯:這裏Y0 = Y1和Y2 = Y3

問候

+3

是否`Y0 == y1`和`Y3 == y2`? – 2011-01-20 00:48:20

+0

爲了將來的參考,您不需要在標題中加入[[已解決]]。 – zzzzBov 2011-01-20 03:59:29

回答

3

如果表示斜率m和假設y0=y1y3=y2,那麼我們可以計算像這樣:

m = (y3 - y0)/(x3 - x0) 
y3 = y2 
m = (y2 - y0)/(x3 - x0) 
m*x3 - m*x0 = y2 - y0 
m*x3 = y2 - y0 + m*x0 
x3 = (y2 - y0 + m*x0)/m 

而且類似:

m = (y2 - y1)/(x2 - x1) 
y1 = y0 
m = (y2 - y0)/(x2 - x1) 
m*x2 - m*x1 = y2 - y0 
-m*x1 = y2 - y0 - m*x2 
x1 = -(y2 - y0 - m*x2)/m 
+1

您好,非常感謝您的幫助。 – user427969 2011-01-20 03:30:57

2

您沒有足夠的數據。只有兩個點和一個斜坡,您可以獲得無限可能的平行四邊形(兩個點和一個斜率僅定義兩個平行線,而不是平行四邊形)。

從您的繪圖中,您似乎在尋找具有水平邊界的平行四邊形,如果是這樣,它會給出第二個斜率,並且您有y0 = y1和y2 = y3。

您使用坡跟讓X3:

x3 = ((y3-y0)/slope) + x0 

只有X1還是個未知數:

x1 = x0 + (x2-x3) 

顯然我沒有檢查所有的退化情況下,當你有沒有解決方案或無限解決方案。我把它留給別人。

+0

嗨,感謝您的回覆 – user427969 2011-01-20 03:32:04

1

在一般情況下,如果雙方平行四邊形不平行於軸線:

alt text

爲Z0和Z1的公式是:

z0 = { Cos[phi]^2 (X2 + (Y0 - Y2) Cot[theta]) + 
     Cos[phi] (Y0 - Y2 + (X0 - X2) Cot[theta]) Sin[phi] + X0 Sin[phi]^2, 

     Y0 Cos[phi]^2 + 
     Cos[phi] (X0 - X2 + (-Y0 + Y2) Cot[theta]) Sin[phi] + 
     (Y2 + (-X0 + X2) Cot[theta]) Sin[phi]^2 
    } 

z1 = { Csc[theta] (Cos[phi - theta] ((-Y0 + Y2) Cos[phi] + X2 Sin[phi]) - 
     X0 Cos[phi] Sin[phi - theta]), 

     Y2 Cos[phi]^2 + 
     Cos[phi] (-X0 + X2 + (Y0 - Y2) Cot[theta]) Sin[phi] + 
     (Y0 + (X0 - X2) Cot[theta]) Sin[phi]^2 
    }