我有一个起点(x0,y0),一个终点(x2,y2)和一个斜率((x0,y0)和(x3,y3)之间的线),我想绘制一个平行四边形。 / p>
(x0,y0) (x1,y1)
__________
\ \
\ \
\_________\
(x3,y3) (x2,y2)
有人能告诉我怎么做吗?或建议一些算法或其他东西。
编辑:这里y0 = y1,y2 = y3
此致
答案 0 :(得分:3)
如果我们将斜率表示为m
并假设y0=y1
和y3=y2
,那么我们可以像这样计算x3
:
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 :(得分:2)
您没有足够的数据。只有两个点和一个斜率,你可以得到无限的平行四边形(两个点和一个斜率只定义了两个平行线,而不是平行四边形)。
从您的绘图中,您似乎正在寻找带有水平边框的平行四边形,如果是这样,它会为您提供第二个斜率,并且您有y0 = y1和y2 = y3。
你使用slop获得x3:
x3 = ((y3-y0)/slope) + x0
只有x1仍未知:
x1 = x0 + (x2-x3)
显然,当你没有解决方案或无限解时,我没有检查所有退化的情况。我把它留给别人。
答案 2 :(得分:1)
通常,如果平行四边形的边与轴不平行:
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
}