2011-01-20 2 views
0

У меня есть начальная точка (x0, y0), конечная точка (x2, y2) и наклон (линии между (x0, y0) и (x3, y3)) и я хочу нарисовать параллелограмм.Как рисовать параллелограмм с двумя точками и наклоном

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

Может кто-нибудь сказать мне, как это сделать? или предложить какой-то алгоритм или что-то еще.

Edit: Здесь y0 = y1 и y2 = y3

С уважением

+3

ли 'y0 == y1' и' y3 == y2'? –

+0

Для дальнейшего использования вам не нужно вставлять '[SOLVED]' в заголовок. – zzzzBov

ответ

3

Если мы обозначим наклон, как m и предположим, что y0=y1 и y3=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

2

У вас нет достаточно данных. С двумя точками и наклоном у вас есть бесконечность возможных параллелограммов (две точки и наклон определяют только две параллели, а не параллелограмм).

С вашего рисунка вы, кажется, ищете параллелограмм с горизонтальными границами, если это дает вам второй уклон, и вы имеете y0 = y1 и y2 = y3.

Вы х3 с помощью помои с:

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

Существует только x1 до сих пор неизвестно:

x1 = x0 + (x2-x3) 

Очевидно, что я не проверил для всех вырождающихся случаев, когда у вас нет никакого решения или бесконечных решений , Я оставляю это кому-то еще.

+0

привет за ответ – user427969

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 
    } 
+0

Спасибо, что мне это может понадобиться позже. С уважением – user427969