Two Methods for Finding Intersection Points of Implicit Curves

Two Methods for Finding Intersection Points of Implicit Curves
Loading the math board and drawing, please wait…
2016-12-18 19:02
This example demonstrates two methods for finding the intersection points of two implicit curves. It involves core mathematical concepts such as implicit curve equations, intersection solving, and analytical geometry. Key GeoGebra commands used include ImplicitCurve, Intersect, PolyLine, Element, Textfield, Polygon, Length, Point, ClosestPoint, If, Corner, TableText, etc. Suitable for high school and above students to understand the calculation and visualization of intersection points of implicit curves.

GeoGebra Commands & Parameters

  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(Nn) → InputBox4
  11. Textfield(e) → InputBox5
  12. Textfield(x_{min}) → InputBox6
  13. Textfield(x_{max}) → InputBox7
  14. Textfield(y_{min}) → InputBox8
  15. Textfield(y_{max}) → InputBox9
  16. 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
  17. Length(lr1) → llr1
  18. Length(lf2) → llf2
  19. Textfield(r) → InputBox16
  20. Element(lr1, i_{manual}) → C_t
  21. Length(lf1) → llf1
  22. Textfield(n_a) → InputBox21
  23. Textfield(n_b) → InputBox22
  24. Textfield(r_a) → InputBox23
  25. Textfield(q) → InputBox24
  26. PolyLine(Z1_a + ((Z2_a - Z1_a) / n_a * Sequence[i, i, 0, n_a])) → poly2_aa
  27. PolyLine(Z1_b + ((Z2_b - Z1_b) / n_b * Sequence[i, i, 0, n_b])) → poly2_bb
  28. Point(poly2_aa, e1) → R_a
  29. Point(poly2_bb, e2) → R_b
  30. ClosestPoint(a, R_a) → R'_a
  31. ClosestPoint(b, R_b) → R'_b
  32. Length(R'_a - R'_b) → dmaxmins2
  33. If(Defined[PZ], If[fza2 < fzb2, (f1za2, f2za2), (f1zb2, f2zb2)], (NaN, NaN)) → errorz2
  34. If(Defined[PZ], If[fza2 < fzb2, R'_a, R'_b], (NaN, NaN)) → Pz2
  35. If(ca, PZ, Pz2) → PZ0
  36. If(ca, f11, x(errorz2)) → f110
  37. If(ca, f22, y(errorz2)) → f220
  38. Element(listxyres, f) → B_t
  39. Textfield(r_b) → InputBox13
  40. Element(roots0, f) → A
  41. Textfield(f1) → InputBox1
  42. Textfield(f2) → InputBox3
  43. Corner(1) → Corner1
  44. Corner(2) → Corner2
  45. Corner(3) → Corner3
  46. Textfield(t) → InputBox10
  47. Length(listxyres) → lä2
  48. TableText({Join[{{"N"}, Sequence[i, i, 1, Length[roots0]]}], Join[{{"N"}, Sequence["→", i, 1, f]}], Join[{{" x:"}, x(roots0)}], Join[{{" y:"}, y(roots0)}], Join[{{"f1*10^-6"}, lf1_{Pr}2}], Join[{{"f2* 10^-6"}, lf2_{Pr}2}]}, "vr") → Text2
  49. ImplicitCurve(f01(x, y)) → c
  50. Textfield(α) → InputBox11
  51. 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
  52. Textfield(i_{manual}) → Eingabefeld1
  53. Textfield(f) → Eingabefeld2