隐式曲线交点几何法

隐式曲线交点几何法
几何画板及绘图内容加载中,请稍等……
2016-12-17 23:42
本范例演示如何通过几何方法寻找两条隐式曲线的交点。涉及的核心数学概念包括解析几何、曲线交点计算。作图要点:使用了 GeoGebra 命令如 ImplicitCurve(隐式曲线)、Intersect(交点)、PolyLine(多边形线)、Element(元素)、Textfield(文本框)、Polygon(多边形)、Length(长度)、Point(点)、ClosestPoint(最近点)、If(条件判断)、Corner(角落)、TableText(表格文本)、Parametric(参数方程)等。适合高中及以上数学学习者,用于理解曲线交点求解方法及 GeoGebra 的应用。

GeoGebra 命令及参数

  1. ImplicitCurve(f1(x, y)) → a
  2. Intersect(Circle[D, r_a], OrthogonalLine[D, Segment[D, ClosestPoint[a, D]]], 2) → Z2_a
  3. Intersect(Circle[D, r_a], OrthogonalLine[D, Segment[D, ClosestPoint[a, D]]], 1) → Z1_a
  4. PolyLine(Zip[ClosestPoint[a, B], B, Z1_a + ((Z2_a - Z1_a) / n_a * Sequence[i, i, 0, n_a])]) → polZa
  5. ImplicitCurve(f2(x, y)) → b
  6. Intersect(Circle[D, r_b], OrthogonalLine[D, Segment[D, ClosestPoint[b, D]]], 1) → Z1_b
  7. Intersect(Circle[D, r_b], OrthogonalLine[D, Segment[D, ClosestPoint[b, D]]], 2) → Z2_b
  8. PolyLine(Zip[ClosestPoint[b, B], B, Z1_b + ((Z2_b - Z1_b) / n_b * Sequence[i, i, 0, n_b])]) → polZb
  9. Element({Intersect[polZb, polZa]}, 1) → PZ
  10. Textfield(x_{min}) → InputBox6
  11. Textfield(x_{max}) → InputBox7
  12. Textfield(y_{min}) → InputBox8
  13. Textfield(y_{max}) → InputBox9
  14. Polygon((x_{min}, y_{min}), (x_{max}, y_{min}), (x_{max}, y_{max}), (x_{min}, y_{max})) → poly1, g1_s, g2_s, g3_s, s4_s
  15. Length(lr1) → llr1
  16. Length(lf2) → llf2
  17. Element(lr1, i_{manual}) → C_t
  18. Length(lf1) → llf1
  19. Textfield(n_a) → InputBox21
  20. Textfield(n_b) → InputBox22
  21. Textfield(r_a) → InputBox23
  22. Textfield(q) → InputBox24
  23. PolyLine(Z1_a + ((Z2_a - Z1_a) / n_a * Sequence[i, i, 0, n_a])) → poly2_aa
  24. PolyLine(Z1_b + ((Z2_b - Z1_b) / n_b * Sequence[i, i, 0, n_b])) → poly2_bb
  25. Point(poly2_aa, e1) → R_a
  26. Point(poly2_bb, e2) → R_b
  27. ClosestPoint(a, R_a) → R'_a
  28. ClosestPoint(b, R_b) → R'_b
  29. Length(R'_a - R'_b) → dmaxmins2
  30. If(Defined[PZ], If[fza2 < fzb2, (f1za2, f2za2), (f1zb2, f2zb2)], (NaN, NaN)) → errorz2
  31. If(Defined[PZ], If[fza2 < fzb2, R'_a, R'_b], (NaN, NaN)) → Pz2
  32. If(ca, PZ, Pz2) → PZ0
  33. If(ca, f11, x(errorz2)) → f110
  34. If(ca, f22, y(errorz2)) → f220
  35. Textfield(r_b) → InputBox13
  36. Textfield(f1) → InputBox1
  37. Textfield(f2) → InputBox3
  38. Corner(1) → Corner1
  39. Corner(2) → Corner2
  40. Corner(3) → Corner3
  41. Textfield(t) → InputBox10
  42. TableText({Join[{{"N"}, Sequence[i, i, 1, llr1]}], Join[{{""}, Sequence["→", i, 1, i_{manual}]}], Join[{{"x:"}, x(lr1)}], Join[{{"y:"}, y(lr1)}], Join[{{"f1* 10^-6"}, lf1}], Join[{{"f2* 10^-6"}, lf2}]}, "vr") → text8
  43. Textfield(i_{manual}) → Eingabefeld1