先算出A1,A2之间的长度,按比例可求出 A3(X,Y)
解决方案 »
- 命令行安装/汇入数字签名
- 关于winsock的问题,解决立马送100分
- 谁救救我啊,关于ADO
- vb.net中怎样对Cookie进行操作?
- ****************传参数的问题,高手指点一下,先谢了**********************
- 如何获得当前程序的运环境是在调试状态下?
- 在水晶报表中要如何来设计条件的查询后得到的记录的打印,请帮我看一下,我要如何修改下面的代码??
- Redim Preserve 重定义多维数组怎么不好用??
- 如何以commonDialog选择一图档读入后, ,用3x3切割后随机方式显示在一picture对象上,各小图又不重复出现
- 请众位大哥帮帮小弟,小弟在子报表这方面欠缺很多!!
- 怎样让调用出来的计算器位于屏幕正中央?
- 求助!!!!高手进来!!!!!!!!
a1,a2 得直线上的交点就是a3
代码,自写
写好就发给你
Dim x2 As Single, y2 As Single 'A2的坐标值
Dim x3 As Single, y3 As Single 'A3的坐标值
Dim Length23 As Single
Private Sub GetResult(ByVal x1 As Single, ByVal y1 As Single, _
ByVal x2 As Single, ByVal y2 As Single, _
ByVal Length23 As Single)
x3 = Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
If x3 = 0 Then
MsgBox "除数为零,错误!"
Exit Sub
End If
x3 = Length23 * (x2 - x1) / x3
x3 = x3 + x2y3 = Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
If y3 = 0 Then
MsgBox "除数为零,错误!"
Exit Sub
End If
y3 = Length23 * (y2 - y1) / y3
y3 = y3 + y2End Sub''测试按钮
Private Sub Command1_Click()
'''传入数据测试
'''根据给定条件,可知第三点为(11,11)
'''看看对不对 ^_^^_^^_^^_^^_^^_^^_^^_^^_^ ^_^
'''要是不信,自己再多测几组数据
x1 = 0
y1 = 0
x2 = 1
y2 = 1
Length23 = 10 * Sqr(2)Call GetResult(x1, y1, x2, y2, Length23)MsgBox "x3=" & x3 & " " & "y3=" & y3, , "对了吧?"End Sub
补充
如果没有,我再发给你啊
不过好像我的分数还没有加……
A2B--A到B的长度,B2C--B到C的长度先求a--b的长度:
A2B = (By-Ay)^2/(Bx-Ax)+(Bx-Ax)根据比例,求出C点坐标
Cx = (B2C/A2B+1)*(Bx-Ax)
Cy = (B2C/A2B+1)*(By-Ay)
将a1和a2的坐标带进去求出a,b的值
然后再列一个等式,根据a2a3的距离
最后求出x,y值即是a3的坐标.
总之:
第一步:已知A,B两点坐标,求它们之间的距离
第二步:C到B的水平距离(X坐标之差)跟B到A的水平距离的比例,等于他们长度之间的比例
同样,Y坐标,也可根据比例很容易求出
Cy = (B2C/A2B+1)*(By-Ay)嘿嘿,错了
更正:Cx = B2C/A2B*(Bx-Ax)+Bx
Cy = B2C/A2B*(By-Ay)+By
dim s as single
s = Atn(X / Y) / 3.141592653576 * 180 + 90
If Y > 0 Then s = s + 180
ArcTan=s
end functionFunction Sub GetP3(ByVal x1 As Single, ByVal y1 As Single, _
ByVal x2 As Single, ByVal y2 As Single, _
ByVal x3 As Single, ByVal y3 As Single, _
ByVal Length23 As Single)
Dim r as single
Dim th as Single
Dim AllR as Single
r=Sqrt((x2-x1)^2+(y2-y1)^2)
AllR=r+Length23
th=ArcTan(x2-x1,y2-y1)
x3=x1+Cos(th)*AllR
y3=y1+Sin(th)*AllR
End Sub
Function Sub GetP3(ByVal x1 As Single, ByVal y1 As Single, _
ByVal x2 As Single, ByVal y2 As Single, _
ByRef x3 As Single, ByRef y3 As Single, _
ByVal Length23 As Single)
Private Sub Command1_Click()
Dim X1 As Single, Y1 As Single
Dim X2 As Single, Y2 As Single
Dim X3 As Single, Y3 As Single
Dim SS As Single 'A1 到 A2 的距离.
Dim LL As Single 'A2 到 A3 的距离.
X1 = 1000
Y1 = 1000
X2 = 2000
Y2 = 2000
LL = 1000
SS = Sqr((Y2 - Y1) ^ 2 + (X2 - X1) ^ 2)
Print "SS ="; SS
X3 = (X2 - X1) * LL / SS + X2
Y3 = (Y2 - Y1) * LL / SS + Y2
Print "X3 ="; X3; "Y3 ="; Y3
Line (X1, Y1)-(X3, Y3)
DrawWidth = 3
PSet (X1, Y1): Print "(X1, Y1)"
PSet (X2, Y2): Print "(X2, Y2)"
PSet (X3, Y3): Print "(X3, Y3)"
DrawWidth = 1
End Sub
Dim X1 As Single, Y1 As Single
Dim X2 As Single, Y2 As Single
Dim X3 As Single, Y3 As Single
Dim SS As Single 'A1 到 A2 的距离.
Dim LL As Single 'A2 到 A3 的距离.
Cls
Scale (-5000, 5000)-(5000, -5000)
X1 = 1000
Y1 = 1300
X2 = 3000
Y2 = 3000
LL = 1000
SS = Sqr((Y2 - Y1) ^ 2 + (X2 - X1) ^ 2)
PSet (0, 0): Print "SS ="; SS
X3 = (X2 - X1) * LL / SS + X2
Y3 = (Y2 - Y1) * LL / SS + Y2
Print "X3 ="; X3; "Y3 ="; Y3
Line (X1, Y1)-(X3, Y3)
DrawWidth = 3
PSet (X1, Y1): Print "(X1, Y1)"
PSet (X2, Y2): Print "(X2, Y2)"
PSet (X3, Y3): Print "(X3, Y3)"
DrawWidth = 1
End Sub
'建议用 Atn(1) * 4 代替 3.141592653576
Print Atn(1) * 4
Print 3.141592653576
Dim s As Single
s = Atn(X / Y) / PI * 180 + 90
If y > 0 Then s = s + 180
ArcTan=s
End Function