记录:坐标系中已知两点和宽度生成矩形并得到各点坐标

问题: 已知三个点的坐标 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jessezappy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值