Two Methods for Finding Intersection Points of Implicit Curves
Loading the math board and drawing, please wait…
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
ImplicitCurve(f1(x, y)) → aIntersect(Circle[D, r_a], OrthogonalLine[D, Segment[D, ClosestPoint[a, D]]], 2) → Z2_aIntersect(Circle[D, r_a], OrthogonalLine[D, Segment[D, ClosestPoint[a, D]]], 1) → Z1_aPolyLine(Zip[ClosestPoint[a, B], B, Z1_a + ((Z2_a - Z1_a) / n_a * Sequence[i, i, 0, n_a])]) → polZaImplicitCurve(f2(x, y)) → bIntersect(Circle[D, r_b], OrthogonalLine[D, Segment[D, ClosestPoint[b, D]]], 1) → Z1_bIntersect(Circle[D, r_b], OrthogonalLine[D, Segment[D, ClosestPoint[b, D]]], 2) → Z2_bPolyLine(Zip[ClosestPoint[b, B], B, Z1_b + ((Z2_b - Z1_b) / n_b * Sequence[i, i, 0, n_b])]) → polZbElement({Intersect[polZb, polZa]}, 1) → PZTextfield(Nn) → InputBox4Textfield(e) → InputBox5Textfield(x_{min}) → InputBox6Textfield(x_{max}) → InputBox7Textfield(y_{min}) → InputBox8Textfield(y_{max}) → InputBox9Polygon((x_{min}, y_{min}), (x_{max}, y_{min}), (x_{max}, y_{max}), (x_{min}, y_{max})) → poly1, g1_s, g2_s, g3_s, s4_sLength(lr1) → llr1Length(lf2) → llf2Textfield(r) → InputBox16Element(lr1, i_{manual}) → C_tLength(lf1) → llf1Textfield(n_a) → InputBox21Textfield(n_b) → InputBox22Textfield(r_a) → InputBox23Textfield(q) → InputBox24PolyLine(Z1_a + ((Z2_a - Z1_a) / n_a * Sequence[i, i, 0, n_a])) → poly2_aaPolyLine(Z1_b + ((Z2_b - Z1_b) / n_b * Sequence[i, i, 0, n_b])) → poly2_bbPoint(poly2_aa, e1) → R_aPoint(poly2_bb, e2) → R_bClosestPoint(a, R_a) → R'_aClosestPoint(b, R_b) → R'_bLength(R'_a - R'_b) → dmaxmins2If(Defined[PZ], If[fza2 < fzb2, (f1za2, f2za2), (f1zb2, f2zb2)], (NaN, NaN)) → errorz2If(Defined[PZ], If[fza2 < fzb2, R'_a, R'_b], (NaN, NaN)) → Pz2If(ca, PZ, Pz2) → PZ0If(ca, f11, x(errorz2)) → f110If(ca, f22, y(errorz2)) → f220Element(listxyres, f) → B_tTextfield(r_b) → InputBox13Element(roots0, f) → ATextfield(f1) → InputBox1Textfield(f2) → InputBox3Corner(1) → Corner1Corner(2) → Corner2Corner(3) → Corner3Textfield(t) → InputBox10Length(listxyres) → lä2TableText({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") → Text2ImplicitCurve(f01(x, y)) → cTextfield(α) → InputBox11TableText({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") → text8Textfield(i_{manual}) → Eingabefeld1Textfield(f) → Eingabefeld2