|
[原创]一条很难证明的几何新定理?A new theorem?
楼主的这个帖子以前也在“东陆”发过。那时本人曾做过这个题目,但是证明两条西摩松线重合的方法不好,所以证明不很成功。
今天卷土重来,把过去的那个程序稍改了一下,再发上来。
';证明定理:已知△ABC 各边高的垂足为Ha,Hb,Hc,各边中点为Ma,Mb,Mc,内切圆(旁切圆)与各边的切点为D、E、F,
';△ABC的九点圆与内切圆(旁切圆)的切点为 Fb(称为Feuerbach 点),
';试证明:Fb 点关于△DEF,△MaMbMc,△HaHbHc 的三条 Simson 线都平行于△DEF的Euler线,
';并且△DEF和△MaMbMc的Simson 线互相重合。
Private Sub Form_Click()
Open "计算结果.txt" For Output As #1
';任意给定△ABC 三个顶点A、B、C 的坐标:XA、YA;XB、YB;XC、YC
';然后进行有关点和直线的计算,看是否符合定理的结论。如果正确,再多次改变上述坐标值,看结论是否仍一样。
XA = 316.857142857143: YA = 434.793687880135: XB = 0: YB = 0: XC = 770: YC = 0
';XA = 594: YA = 810: XB = 172: YB = 175: XC = 946: YC = 365
';XA = 565.48843131: YA = 522.61155178: XB = 0: YB = 0: XC = 797.99900301: YC = 0
';XA = 100: YA = 200: XB = 800: YB = 400: XC = 500: YC = 750
';计算△ABC 三边长度:
AB = Sqr((XA - XB) ^ 2 + (YA - YB) ^ 2): BA = AB
BC = Sqr((XB - XC) ^ 2 + (YB - YC) ^ 2): CB = BC
CA = Sqr((XC - XA) ^ 2 + (YC - YA) ^ 2): AC = CA
';计算△ABC 重心 G1 坐标:
XG1 = (XA + XB + XC) / 3: YG1 = (YA + YB + YC) / 3
';计算△ABC 内切圆半径 RO2:
p = (AB + BC + CA) / 2: RO2 = Sqr((p - AB) * (p - BC) * (p - CA) / p)
';计算△ABC的三个内角:
JBAC = 2 * Atn(RO2 / (p - BC))
JABC = 2 * Atn(RO2 / (p - CA))
JACB = 2 * Atn(RO2 / (p - AB))
';调子程序 sub1 计算△ABC 垂心 H1 的坐标:
X1 = XA: X2 = XB: X3 = XC: Y1 = YA: Y2 = YB: Y3 = YC
GoSub sub1: XH1 = XH: YH1 = YH
';计算△ABC 三条高线的垂心 Ha,Hb,Hc 坐标:
BHa = AB * Cos(JABC): CHa = AC * Cos(JACB)
XHa = (CHa * XB + BHa * XC) / (CHa + BHa): YHa = (CHa * YB + BHa * YC) / (CHa + BHa)
CHb = BC * Cos(JACB): AHb = AB * Cos(JBAC)
XHb = (AHb * XC + CHb * XA) / (AHb + CHb): YHb = (AHb * YC + CHb * YA) / (AHb + CHb)
AHc = AC * Cos(JBAC): BHc = BC * Cos(JABC)
XHc = (BHc * XA + AHc * XB) / (BHc + AHc): YHc = (BHc * YA + AHc * YB) / (BHc + AHc)
';计算△ABC 外接圆半径 RO1 和九点圆的半径 RO3:
RO1 = BC / 2 / Sin(JBAC): RO3 = RO1 / 2
';计算△ABC的三条高:
AHa = AC * Sin(JACB)
BHb = AB * Sin(JBAC)
CHc = BC * Sin(JABC)
';计算△ABC九点圆的圆心坐标 XO3、YO3:
AH1 = AB * Cos(JBAC) / Sin(JACB): AA1 = AH1 / 2
XMa = (XB + XC) / 2: YMa = (YB + YC) / 2 ';Ma 点坐标
BHa = AB * Cos(JABC)
XHa = XB + (XC - XB) * BHa / BC: YHa = YB + (YC - YB) * BHa / BC ';垂足 Ha 坐标
XA1 = XHa + (XA - XHa) * (AHa - AA1) / AHa: YA1 = YHa + (YA - YHa) * (AHa - AA1) / AHa ';A1 点坐标
XO3 = (XMa + XA1) / 2: YO3 = (YMa + YA1) / 2
';计算△ABC内切圆的圆心坐标 XO2、YO2:
XO2 = (AB * XC + BC * XA + AC * XB) / (AB + BC + CA)
YO2 = (AB * YC + BC * YA + AC * YB) / (AB + BC + CA)
';计算△ABC内切圆三个切点D、E、F 的坐标:
kAB = (YA - YB) / (XA - XB)
XF = (XO2 + kAB * kAB * XA + kAB * YO2 - kAB * YA) / (1 + kAB * kAB)
YF = YO2 + (kAB * (XO2 - XA) - (YO2 - YA)) / (1 + kAB * kAB)
kAC = (YA - YC) / (XA - XC)
XE = (XO2 + kAC * kAC * XA + kAC * YO2 - kAC * YA) / (1 + kAC * kAC)
YE = YO2 + (kAC * (XO2 - XC) - (YO2 - YC)) / (1 + kAC * kAC)
kBC = (YB - YC) / (XB - XC)
XD = (XO2 + kBC * kBC * XB + kBC * YO2 - kBC * YB) / (1 + kBC * kBC)
YD = YO2 + (kBC * (XO2 - XB) - (YO2 - YB)) / (1 + kBC * kBC)
';计算九点圆⊙O3与内切圆⊙O2的切点(FB 点)坐标 XFb、YFb:
';计算⊙O2与⊙O3连线与⊙O2圆的交点坐标 P2、Q2:
k = (YO2 - YO3) / (XO2 - XO3)
XP2 = XO2 + RO2 / Sqr(1 + k * k): YP2 = k * (XP2 - XO2) + YO2
XQ2 = XO2 - RO2 / Sqr(1 + k * k): YQ2 = k * (XQ2 - XO2) + YO2
';计算⊙O2与⊙O3连线与⊙O3圆的交点坐标 P3、Q3:
XP3 = XO3 + RO3 / Sqr(1 + k * k): YP3 = k * (XP3 - XO3) + YO3
XQ3 = XO3 - RO3 / Sqr(1 + k * k): YQ3 = k * (XQ3 - XO3) + YO3
If Abs(XP2 - XP3) < 0.001 And Abs(YP2 - YP3) < 0.001 Then XFb = XP2: YFb = YP2
If Abs(XP2 - XQ3) < 0.001 And Abs(YP2 - YQ3) < 0.001 Then XFb = XP2: YFb = YP2
If Abs(XQ2 - XP3) < 0.001 And Abs(YQ2 - YP3) < 0.001 Then XFb = XQ2: YFb = YQ2
If Abs(XQ2 - XQ3) < 0.001 And Abs(YQ2 - YQ3) < 0.001 Then XFb = XQ2: YFb = YQ2
';计算 △DEF 的 Euler 线方程
XG2 = (XD + XE + XF) / 3: YG2 = (YD + YE + YF) / 3 ';计算△DEF 重心 G2 坐标
';调子程序 sub1 计算△DEF 垂心 H2 的坐标 XH2、YH2:
X1 = XD: X2 = XE: X3 = XF: Y1 = YD: Y2 = YE: Y3 = YF
GoSub sub1: XH2 = XH: YH2 = YH
';由△DEF 的重心和垂心坐标确定△DEF 欧拉线的方程为:y-YG2 = (YG2 - YH2) / (XG2 - XH2)*(x-XG2)
kk = (YG2 - YH2) / (XG2 - XH2) ';欧拉线的斜率,以下证明“平行”就是要证明斜率相等
Print "△DEF的Euler线斜率: "; Format(kk, "0.0000000000000")
Print #1, "△DEF的Euler线斜率: "; Format(kk, "0.0000000000000")
';调用子程序 sub2 计算△DEF的西摩松线方程,假定线上有两点 M1,N1
X1 = XD: Y1 = YD: X2 = XE: Y2 = YE: X3 = XF: Y3 = YF: X0 = XFb: Y0 = YFb
GoSub sub2
XM1 = XZ1: YM1 = YZ1: XN1 = XZ2: YN1 = YZ2
XP = XM1: YP = YM1 ';令 P 点与 M1 点重合,下面的证明中要用到 P 点的坐标。
kk1 = (YN1 - YM1) / (XN1 - XM1)
';△DEF的西摩松线方程: y-YM1=kk1*(x-XM1),也就是:y=kk1*x-kk1*XM1+YM1
Print "△DEF的Simson线斜率: "; Format(kk1, "0.0000000000000")
Print #1, "△DEF的Simson线斜率: "; Format(kk1, "0.0000000000000")
';调用子程序 sub2 计算△MaMbMc的西摩松线方程,假定线上有两点 M2,N2
X1 = (XB + XC) / 2: Y1 = (YB + YC) / 2: X2 = (XA + XC) / 2: Y2 = (YA + YC) / 2
X3 = (XA + XB) / 2: Y3 = (YA + YB) / 2: X0 = XFb: Y0 = YFb
GoSub sub2
XM2 = XZ1: YM2 = YZ1: XN2 = XZ2: YN2 = YZ2
XQ = XM2: YQ = YM2 ';令 Q 点与 M2 点重合,下面的证明中要用到 Q 点的坐标。
kk2 = (YN2 - YM2) / (XN2 - XM2)
';△MaMbMc的西摩松线方程: y-YM2=kk2*(x-XM2),也就是:y=kk2*x-kk2*XM2+YM2
Print "△MaMbMc的Simson线斜率:"; Format(kk2, "0.0000000000000")
Print #1, "△MaMbMc的Simson线斜率:"; Format(kk2, "0.0000000000000")
';调用子程序 sub2 计算△HaHbHc的西摩松线方程,假定线上有两点 M3,N3
X1 = XHa: Y1 = YHa: X2 = XHb: Y2 = YHb
X3 = XHc: Y3 = YHc: X0 = XFb: Y0 = YFb
GoSub sub2
XM3 = XZ1: YM3 = YZ1: XN3 = XZ2: YN3 = YZ2
kk3 = (YN3 - YM3) / (XN3 - XM3)
';△HaHbHc的西摩松线方程: y-YM3=kk3*(x-XM3)
Print "△HaHbHc的Simson线斜率:"; Format(kk3, "0.0000000000000")
Print #1, "△HaHbHc的Simson线斜率:"; Format(kk3, "0.0000000000000")
';下面证明△DEF的西摩松线与△MaMbMc的西摩松线重合
';在△DEF的西摩松线上取一点 P,在△MaMbMc的西摩松线上取一点 Q,计算 PQ 线的斜率是否等于上述两西摩松线的斜率
';如果相等,就表明 △DEF的西摩松线与△MaMbMc的西摩松线重合
KPQ = (YP - YQ) / (XP - XQ)
Print " Q 线的斜率: "; Format(KPQ, "0.0000000000000")
999: Close
Exit Sub
sub1: ';子程序,由三角形三顶点的坐标 X1、Y1;X2、Y2;X3、Y3 计算其垂心的坐标 Xh、Yh
c = Sqr((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
a = Sqr((X2 - X3) ^ 2 + (Y2 - Y3) ^ 2)
b = Sqr((X3 - X1) ^ 2 + (Y3 - Y1) ^ 2)
pp = (a + b + c) / 2: rr = Sqr((pp - a) * (pp - b) * (pp - c) / pp)
JA = 2 * Atn(rr / (pp - a))
JB = 2 * Atn(rr / (pp - b))
JC = 2 * Atn(rr / (pp - c))
XH = (a * Cos(JB) * Cos(JC) * X1 + c * Cos(JA) * Cos(JB) * X3 + b * Cos(JA) * Cos(JC) * X2)
XH = XH / ((a * Cos(JB) * Cos(JC) + c * Cos(JA) * Cos(JB) + b * Cos(JA) * Cos(JC)))
YH = (a * Cos(JB) * Cos(JC) * Y1 + c * Cos(JA) * Cos(JB) * Y3 + b * Cos(JA) * Cos(JC) * Y2)
YH = YH / ((a * Cos(JB) * Cos(JC) + c * Cos(JA) * Cos(JB) + b * Cos(JA) * Cos(JC)))
Return
sub2: ';由三角形三顶点 1、2、3 的坐标 X1、Y1;X2、Y2;X3、Y3 及其外接圆上某点 0 的坐标 X0、Y0 计算西摩松线的方程
k = (Y2 - Y1) / (X2 - X1)
XZ1 = (X0 + k * k * X1 + k * Y0 - k * Y1) / (1 + k * k): YZ1 = (Y1 + k * k * Y0 + k * X0 - k * X1) / (1 + k * k)
k = (Y3 - Y1) / (X3 - X1)
XZ2 = (X0 + k * k * X1 + k * Y0 - k * Y1) / (1 + k * k): YZ2 = (Y1 + k * k * Y0 + k * X0 - k * X1) / (1 + k * k)
Return
End Sub
运行结果:
△DEF的Euler线斜率: -2.6810453320632
△DEF的Simson线斜率: -2.6810453320632
△MaMbMc的Simson线斜率:-2.6810453320632
△HaHbHc的Simson线斜率:-2.6810453320632
PQ 线的斜率: -2.6810453320632
说明:在△DEF的西摩松线上取一点 P,在△MaMbMc的西摩松线上取一点 Q,
计算 PQ 线的斜率是否等于上述两西摩松线的斜率。
计算结果是斜率相等,因此△DEF的西摩松线与△MaMbMc的西摩松线重合。
|
|