数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 4326|回复: 4

求外 Soddy 圆的圆心坐标并证明三对切点连线共点

[复制链接]
发表于 2023-4-14 11:05 | 显示全部楼层 |阅读模式
本帖最后由 天山草 于 2023-4-14 11:09 编辑

圆A、圆B、圆C 两两外切,与这三圆都外切的圆称为外 Soddy 圆。若已知 A、B、C 的坐标,求外 Soddy 圆的圆心坐标。
证明图中三对切点连线交于一点 G。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2023-4-14 11:47 | 显示全部楼层
本帖最后由 天山草 于 2023-4-14 22:49 编辑


运行结果:

程序代码:
  1. Clear["Global`*"];
  2. (*构图法:B点置于坐标原点,BC与横轴重合,C、D点的坐标为变量,D是内切圆与BC切点。内切圆半径为 1*)
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(d\), \(_\)]\) = d; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c;
  4. a = ((d^2 - 1) (d - c) + 2 I d (d - c))/(1 - c d + d^2);
  5. \!\(\*OverscriptBox[\(a\), \(_\)]\) = ((d^2 - 1) (d - c) - 2 I d (d - c))/(1 - c d + d^2);
  6. f = (d (d + I))/(d - I);  \!\(\*OverscriptBox[\(f\), \(_\)]\) = (d (d - I))/(d + I);
  7. e = ( c (d + 2 I) - d (d + I))/(c - d + I);  \!\(\*OverscriptBox[\(e\), \(_\)]\) = ( d (d - I) - c (d - 2 I))/(-c + d + I);  
  8. (*以上公式是此构图下的已知公式,直接引用而不再推导*)
  9. Print["D = ", d, ",  E = ", e, ",  F = ", f];
  10. RB = d; RC = c - d; RA2 = Simplify[(a - f) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\))];(*RA的平方*) RA = -c/( 1 - c d + d^2); Print["RA = ", RA, ",  RB = ", RB, ",  RC = ", RC];(*三个圆的半径*)
  11. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
  12. FourPoint[a_, b_, c_, d_] := ((\!\(\*OverscriptBox[\(c\), \(_\)]\) d - c \!\(\*OverscriptBox[\(d\), \(_\)]\)) (a - b) - (
  13. \!\(\*OverscriptBox[\(a\), \(_\)]\) b - a \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d))/((a - b) (\!\(\*OverscriptBox[\(c\), \(_\)]\) -
  14. \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d));
  15. \!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[a_, b_, c_, d_] := -(((c \!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\) d) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) - ( a \!\(\*OverscriptBox[\(b\), \(_\)]\) -
  16. \!\(\*OverscriptBox[\(a\), \(_\)]\) b) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)))/((a - b) (
  17. \!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (\!\(\*OverscriptBox[\(a\), \(_\)]\) -
  18. \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d)));
  19. r = Simplify@FourPoint[f, d, a, c]; \!\(\*OverscriptBox[\(r\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[f, d, a, c]; p = Simplify@FourPoint[f, e, b, c]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = p; q = Simplify@FourPoint[e, d, a, b];
  20. \!\(\*OverscriptBox[\(q\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[e, d, a, b];
  21. Print["R = ", r, ",  P = ", p, ",  Q = ", q];
  22. W1 = {at, \!\(\*OverscriptBox[\(at\), \(_\)]\)} /. Simplify@Solve[{(p - at)/(\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(at\), \(_\)]\)) == -((a - at)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(at\), \(_\)]\))), (p - a) (\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) == (p - at) (\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(at\), \(_\)]\)) + RA^2}, {at, \!\(\*OverscriptBox[\(at\), \(_\)]\)}] // Flatten;
  23. at = Part[W1, 1]; \!\(\*OverscriptBox[\(at\), \(_\)]\) = Part[W1, 2];
  24. W2 = {bt, \!\(\*OverscriptBox[\(bt\), \(_\)]\)} /. Simplify@Solve[{(r - bt)/(\!\(\*OverscriptBox[\(r\), \(_\)]\) -
  25. \!\(\*OverscriptBox[\(bt\), \(_\)]\)) == -((b - bt)/(\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(bt\), \(_\)]\))), (r - b) (
  26. \!\(\*OverscriptBox[\(r\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (r - bt) (\!\(\*OverscriptBox[\(r\), \(_\)]\) -
  27. \!\(\*OverscriptBox[\(bt\), \(_\)]\)) + RB^2}, {bt, \!\(\*OverscriptBox[\(bt\), \(_\)]\)}] // Flatten ; bt = Part[W2, 3];
  28. \!\(\*OverscriptBox[\(bt\), \(_\)]\) = Part[W2, 4];
  29. W3 = {ct, \!\(\*OverscriptBox[\(ct\), \(_\)]\)} /. Simplify@Solve[{(q - ct)/(\!\(\*OverscriptBox[\(q\), \(_\)]\) -
  30. \!\(\*OverscriptBox[\(ct\), \(_\)]\)) == -((c - ct)/(\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(ct\), \(_\)]\))), (q - c) (
  31. \!\(\*OverscriptBox[\(q\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)) == (q - ct) (\!\(\*OverscriptBox[\(q\), \(_\)]\) -
  32. \!\(\*OverscriptBox[\(ct\), \(_\)]\)) + RC^2}, {ct, \!\(\*OverscriptBox[\(ct\), \(_\)]\)}] // Flatten ; ct = Part[W3, 3];
  33. \!\(\*OverscriptBox[\(ct\), \(_\)]\) = Part[W3, 4];
  34. Print["AT = ", at, ",  BT = ", bt, ",  CT = ", ct];(*三个切点的坐标*)
  35. WX[a_, b_, c_] := (a \!\(\*OverscriptBox[\(a\), \(_\)]\) (c - b) + b \!\(\*OverscriptBox[\(b\), \(_\)]\)(a - c) + c \!\(\*OverscriptBox[\(c\), \(_\)]\)(b - a) )/(\!\(\*OverscriptBox[\(a\), \(_\)]\)(c - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\)(a - c) + \!\(\*OverscriptBox[\(c\), \(_\)]\)(b - a));     
  36. \!\(\*OverscriptBox[\(WX\), \(_\)]\)[a_, b_, c_] := -((a \!\(\*OverscriptBox[\(a\), \(_\)]\)(\!\(\*OverscriptBox[\(c\), \(_\)]\) -
  37. \!\(\*OverscriptBox[\(b\), \(_\)]\)) + b \!\(\*OverscriptBox[\(b\), \(_\)]\)(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)) + c \!\(\*OverscriptBox[\(c\), \(_\)]\)(\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)))/(
  38. \!\(\*OverscriptBox[\(a\), \(_\)]\)(c - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\)(a - c) + \!\(\*OverscriptBox[\(c\), \(_\)]\)(b - a)));
  39. s = Simplify@WX[at, bt, ct];
  40. \!\(\*OverscriptBox[\(s\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(WX\), \(_\)]\)[at, bt, ct];
  41. s = (d^2 (c - d - 1) (c (d - 2) - d^2 + d))/(d^4 + d^2 - c (2 d^2 - 2 d + 1) d + c^2 (d - 1)^2) +
  42.    I (2 d (c - d) (c (d - 1) - d^2))/(d^4 + d^2 - c (2 d^2 - 2 d + 1) d + c^2 (d - 1)^2);
  43. Print["Soddy 圆的圆心坐标(实部+虚部) S = ", s];
  44. g = FullSimplify@FourPoint[f, ct, e, bt];
  45. \!\(\*OverscriptBox[\(g\), \(_\)]\) = FullSimplify@\!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[f, ct, e, bt];(*直线F-CT与E-BT的交点*)
  46. g1 = FullSimplify@FourPoint[f, ct, d, at]; \!\(\*OverscriptBox[\(g1\), \(_\)]\) = FullSimplify@\!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[f, ct, d, at]; (*直线F-CT与D-AT的交点*)
  47. Print["G = ", g, ",  G1 = ", g1];
  48. Print["以下测试G点与G1点是否重合:"];
  49. Simplify[g == g1](*测试G点与G1点是否重合*)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点评

Soddy圆如何作  发表于 2023-4-14 20:52
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-14 22:48 | 显示全部楼层
本帖最后由 天山草 于 2023-4-14 22:51 编辑


如何作出外 Soddy 圆?
\(FE\) 交 \(BC\)于 \(P\),从 \(P\)作圆 \(A\)的切线,切点为 \(AT\);
\(FD\) 交 \(AC\)于 \(R\),从 \(R\)作圆 \(B\)的切线,切点为 \(BT\);
\(DE\) 交 \(BA\)于 \(Q\),从 \(Q\)作圆 \(C\)的切线,切点为 \(CT\);
过 \(AT、BT、CT\) 的圆就是外 Soddy 圆。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点评

谢谢  发表于 2023-4-15 20:25
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-6-24 02:26 , Processed in 0.096664 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表