问题: 已知三个点的坐标 A、B、C,和宽度 R ,以中点 B 作为重合顶点,中点分别与两个端点A、C 为边,绘制两个矩形,组成一个新的形状,求合并后图形上剩余三个点A1、B1、C1 的坐标。
每个矩形的原始边计为 AB ,生成的矩形另外两个端点计为 CD(对应 A1,B1A)。
那么先处理每个矩形 AB ,BC ,得到新坐标 A1,B1A,C1 ,B1C :
但是生成的矩形的方向
根据以上公式,可直接得出计算结果:
解决其他问题:
下一步,再求得两个矩形相交的点即可,即矩形边 A1—B1A 和 C1—B1C 的交点 B1 :
Function FindIntersection(x1, y1, x2, y2, x3, y3, x4, y4)
' 计算系数
Dim a1, b1, c1, a2, b2, c2
a1 = y2 - y1
b1 = x1 - x2
c1 = a1 * x1 + b1 * y1
a2 = y4 - y3
b2 = x3 - x4
c2 = a2 * x3 + b2 * y3
' 计算行列式
Dim D, Dx, Dy
D = a1 * b2 - a2 * b1
If D = 0 Then
' 平行或重合的直线
FindIntersection = "无唯一交点"
Else
' 计算交点坐标
Dx = c1 * b2 - c2 * b1
Dy = a1 * c2 - a2 * c1
Dim x, y
x = Dx / D
y = Dy / D
' 返回交点坐标
FindIntersection = "交点坐标: (" & x & ", " & y & ")"
End If
End Function
' 示例调用
Dim intersection
intersection = FindIntersection(1, 2, 3, 4, 5, 6, 7, 8)
WScript.Echo intersection