|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
给定任意三点坐标,比如A(x1,y1)、B(x2,y2)、C(x3,y3),能否画一段弧线?
两种情况:
1、三点在同一条线上,三点共线,不能画弧。怎么判断在同一条线上?
2、其中一点到另两点的距离相等,则该点为圆心,另两点在圆弧上。即三点连线为等腰三角形或为等边三角形,其中某点为圆心,另两点在圆弧上。
3、第1种情况外,三点共圆,所以三点都可以在圆弧上。
本人技术太差,写了两个函数,就写不下去了,麻烦各位大侠帮忙。
- Function distance(ByVal d1 As Single, ByVal d2 As Single, ByVal d3 As Single, ByVal d4 As Single) '两点距离
- Sl = (d3 - d1) ^ 2 + (d4 - d2) ^ 2
- If Sl > 0 Then
- distance = Sqr(Sl)
- End If
- End Function
- Function midvertical(ByVal d1 As Single, ByVal d2 As Single, ByVal d3 As Single, ByVal d4 As Single) '两点中垂线方程
- Dim dx0 As Single
- Dim dy0 As Single
- Dim k As Single
- Dim k1 As Single
- Dim x As Single
- Dim y As Single
- dx0 = (d1 + d3) / 2: dy0 = (d2 + d4) / 2 '中点坐标
- k = (d4 - d2) / (d3 - d1) '直线斜率
- k1 = -k
- y -dy0 = -k * (x - dx0)
- y = -k * (x - dx0) + dy0
- midvertical = y
- End Function
复制代码 中垂线方程函数问题较多,烦请各位,谢谢。
- Sub Macro1()
- Set shp = ActiveSheet.Shapes.AddShape(msoShapeArc, X, Y, r, r)
- End Sub
复制代码
|
|