Classifying Quadrilaterals by Four Sides
Loading the math board and drawing, please wait…
① This example demonstrates how to classify quadrilaterals into squares, rectangles, rhombuses, parallelograms, trapezoids, kites, etc., based on side lengths, presence of right angles, and parallel sides. ② Core mathematical concepts include quadrilateral definitions and properties, criteria for parallelism and perpendicularity, symmetry, and logical classification reasoning. ③ Construction highlights: Points and Segments define vertices and edges; Polygon builds the shapes; Circle, Semicircle, and Intersect create auxiliary circles and intersection points; Sequence and List generate multiple quadrilateral instances; Midpoint, Angle, Rotate, Vector, and If implement dynamic detection and labeling. ④ Suitable for middle‑school geometry classification lessons, high‑school review, and as a GeoGebra dynamic demonstration resource.
GeoGebra Commands & Parameters
Point(Segment[(1, 2), (10, 2)]) → BSegment((0, 2), (round(10 * x(B)) / 10, 2)) → bPoint(Segment[(1, 1), (10, 1)]) → ASegment((0, 1), (round(10 * x(A)) / 10, 1)) → aSemicircle((x(Q) - b, y(Q)), (x(Q) + b, y(Q))) → c_qPoint(c_q) → R1Point(Segment[(1, 3), (10, 3)]) → CSegment((0, 3), (round(10 * x(C)) / 10, 3)) → cCircle(R, c) → c_rPoint(Segment[(1, 4), (10, 4)]) → DSegment((0, 4), (round(10 * x(D)) / 10, 4)) → dCircle(P, d) → c_pIntersect(c_r, c_p, 2) → S1Sequence(Segment[(k, 0), (k, -1 * 0.5)], k, 0, 10) → list1Polygon((-0.3, 0.02662), (-0.3, -1.27338), (10.3, -1.27338), (10.3, 0.02662)) → poly1, poly1_1, poly1_2, poly1_3, poly1_4Sequence(Segment[(k + 0.5, 0), (k + 0.5, -1 * 0.375)], k, 0, 9) → list2Sequence(Sequence[Segment[(0.5 * (i - 1) + j / 10, 0), (0.5 * (i - 1) + j / 10, -1 * 0.25)], j, 1, 4], i, 1, 20) → list3Midpoint((0, 1), A) → A'Midpoint((0, 2), B) → B'Midpoint((0, 3), C) → C'Midpoint((0, 4), D) → D'Segment((0, 4), (0, 0)) → iSegment(P, Q) → jSegment(P, R) → kIntersect(c_p, k, 1) → EIntersect(c_r, k, 1) → FSegment((round(10 * x(C)) / 10, 3), (round(10 * x(C)) / 10, 0)) → gSegment((round(10 * x(B)) / 10, 2), (round(10 * x(B)) / 10, 0)) → fSegment((round(10 * x(A)) / 10, 1), (round(10 * x(A)) / 10, 0)) → eSegment((round(10 * x(D)) / 10, 4), (round(10 * x(D)) / 10, 0)) → hAngle(Rotate[P, (-β1)°, Q], Q, P) → βAngle(Rotate[Q, (-γ1)°, R], R, Q) → γAngle(Q, P, Rotate[Q, α1°, P]) → αPolygon(P, Q, R1, S1) → poly2, t, a_1, b_1, c_1Angle(Q, P, Rotate[Q, 90*°, P]) → α_0Angle(R, Q, Rotate[R, 90*°, Q]) → β_0Angle(S, R, Rotate[S, 90*°, R]) → γ_0Angle(P, S, Rotate[P, 90*°, S]) → δ_0Segment(Midpoint[P, Q], Rotate[Intersect[Circle[Midpoint[P, Q], 0.2], Ray[Midpoint[P, Q], P]], 30*°, Midpoint[P, Q]]) → u_2Segment(Midpoint[P, Q], Rotate[Intersect[Circle[Midpoint[P, Q], 0.2], Ray[Midpoint[P, Q], P]], 330*°, Midpoint[P, Q]]) → u_1Segment(Midpoint[S, R], Rotate[Intersect[Circle[Midpoint[S, R], 0.2], Ray[Midpoint[S, R], S]], 330*°, Midpoint[S, R]]) → v_1Segment(Midpoint[S, R], Rotate[Intersect[Circle[Midpoint[S, R], 0.2], Ray[Midpoint[S, R], S]], 30*°, Midpoint[S, R]]) → v_2Segment(Midpoint[Q, R], Rotate[Intersect[Circle[Midpoint[Q, R], 0.2], Ray[Midpoint[Q, R], Q]], 330*°, Midpoint[Q, R]]) → w_1Segment(Midpoint[Q, R], Rotate[Intersect[Circle[Midpoint[Q, R], 0.2], Ray[Midpoint[Q, R], Q]], 30*°, Midpoint[Q, R]]) → w_2Segment(Translate[Midpoint[Q, R], Vector[Q, R] / b * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[Q, R], 0.2], Ray[Midpoint[Q, R], Q]], 330*°, Midpoint[Q, R]], Vector[Q, R] / b * 0.2]) → w_3Segment(Translate[Midpoint[Q, R], Vector[Q, R] / b * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[Q, R], 0.2], Ray[Midpoint[Q, R], Q]], 30*°, Midpoint[Q, R]], Vector[Q, R] / b * 0.2]) → w_4Segment(Midpoint[P, S], Rotate[Intersect[Circle[Midpoint[P, S], 0.2], Ray[Midpoint[P, S], P]], 330*°, Midpoint[P, S]]) → z_1Segment(Midpoint[P, S], Rotate[Intersect[Circle[Midpoint[P, S], 0.2], Ray[Midpoint[P, S], P]], 30*°, Midpoint[P, S]]) → z_2Angle(P, S, Rotate[P, δ1°, S]) → δMidpoint(Midpoint[P, R], Midpoint[Q, S]) → GCircle(H, 1) → rPoint(r) → IRotate(P, ε1°, G) → P'Rotate(Q, ε1°, G) → Q'Rotate(R, ε1°, G) → R'Rotate(S, ε1°, G) → S'Polygon(P', Q', R', S') → poly2', p', q', r'_1, s'_1Angle(Q', P', Rotate[Q', α1°, P']) → α'Angle(Rotate[P', (-β1)°, Q'], Q', P') → β'Rotate(S_0, ε1°, G) → S'_1Angle(Rotate[Q', (-γ1)°, R'], R', Q') → γ'Angle(P', S', Rotate[P', δ1°, S']) → δ'Angle(Q', P', Rotate[Q', 90*°, P']) → α'_0Angle(R', Q', Rotate[R', 90*°, Q']) → β'_0Angle(S', R', Rotate[S', 90*°, R']) → γ'_0Angle(P', S', Rotate[P', 90*°, S']) → δ'_0Segment(Midpoint[P', Q'], Rotate[Intersect[Circle[Midpoint[P', Q'], 0.2], Ray[Midpoint[P', Q'], P']], 330*°, Midpoint[P', Q']]) → u'_1Segment(Midpoint[P', Q'], Rotate[Intersect[Circle[Midpoint[P', Q'], 0.2], Ray[Midpoint[P', Q'], P']], 30*°, Midpoint[P', Q']]) → u'_2Segment(Midpoint[S', R'], Rotate[Intersect[Circle[Midpoint[S', R'], 0.2], Ray[Midpoint[S', R'], S']], 330*°, Midpoint[S', R']]) → v'_1Segment(Midpoint[S', R'], Rotate[Intersect[Circle[Midpoint[S', R'], 0.2], Ray[Midpoint[S', R'], S']], 30*°, Midpoint[S', R']]) → v'_2Segment(Midpoint[Q', R'], Rotate[Intersect[Circle[Midpoint[Q', R'], 0.2], Ray[Midpoint[Q', R'], Q']], 330*°, Midpoint[Q', R']]) → w'_1Segment(Midpoint[Q', R'], Rotate[Intersect[Circle[Midpoint[Q', R'], 0.2], Ray[Midpoint[Q', R'], Q']], 30*°, Midpoint[Q', R']]) → w'_2Segment(Translate[Midpoint[Q', R'], Vector[Q', R'] / b * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[Q', R'], 0.2], Ray[Midpoint[Q', R'], Q']], 330*°, Midpoint[Q', R']], Vector[Q', R'] / b * 0.2]) → w'_3Segment(Translate[Midpoint[Q', R'], Vector[Q', R'] / b * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[Q', R'], 0.2], Ray[Midpoint[Q', R'], Q']], 30*°, Midpoint[Q', R']], Vector[Q', R'] / b * 0.2]) → w'_4Segment(Midpoint[P', S'], Rotate[Intersect[Circle[Midpoint[P', S'], 0.2], Ray[Midpoint[P', S'], P']], 330*°, Midpoint[P', S']]) → z'_1Segment(Midpoint[P', S'], Rotate[Intersect[Circle[Midpoint[P', S'], 0.2], Ray[Midpoint[P', S'], P']], 30*°, Midpoint[P', S']]) → z'_2Vector(H, I) → uAngle((x(H) + 1, y(H)), H, I) → εSegment((x(H) + 1, y(H)), H) → sMidpoint(P, Q) → JMidpoint(Q, R) → KMidpoint(R, S) → LMidpoint(S, P) → MRotate(J, ε1°, G) → J'Rotate(K, ε1°, G) → K'Rotate(L, ε1°, G) → L'Rotate(M, ε1°, G) → M'Segment(Translate[Midpoint[P, S], Vector[P, S] / d * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[P, S], 0.2], Ray[Midpoint[P, S], P]], 330*°, Midpoint[P, S]], Vector[P, S] / d * 0.2]) → z_3Segment(Translate[Midpoint[P, S], Vector[P, S] / d * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[P, S], 0.2], Ray[Midpoint[P, S], P]], 30*°, Midpoint[P, S]], Vector[P, S] / d * 0.2]) → z_4Segment(Translate[Midpoint[P', S'], Vector[P', S'] / d * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[P', S'], 0.2], Ray[Midpoint[P', S'], P']], 330*°, Midpoint[P', S']], Vector[P', S'] / d * 0.2]) → z'_3Segment(Translate[Midpoint[P', S'], Vector[P', S'] / d * 0.2], Translate[Rotate[Intersect[Circle[Midpoint[P', S'], 0.2], Ray[Midpoint[P', S'], P']], 30*°, Midpoint[P', S']], Vector[P', S'] / d * 0.2]) → z'_4Midpoint(P, E) → NMidpoint(F, R) → OIf(d ≟ c ∧ (c ≠ b) ∧ (c ≠ a), 1, If[d ≟ b ∧ (b ≠ a), 0, If[d ≟ a, 1, 0]]) → d1If(d ≟ c ∧ (c ≠ b) ∧ (c ≠ a), 0, If[d ≟ b ∧ (b ≠ a), 0, If[d ≟ a, 0, 0.8]]) → d2If(d ≟ c ∧ (c ≠ b) ∧ (c ≠ a), 1, If[d ≟ b ∧ (b ≠ a), 1, If[d ≟ a, 0, 0.8]]) → d3Segment(R1, S1) → nSegment(P, S1) → mSegment(Q, R1) → lPoint(c_r) → TPoint(c_p) → USegment(R, T) → d_1Segment(P, U) → e_1Midpoint(R, T) → VMidpoint(P, U) → WSegment(F, R) → qSegment(P, E) → p
AI Drawing Prompt Reference
Draw a teaching diagram for classifying quadrilaterals. At the bottom, a horizontal ruler with tick marks is shown. Above it, four parallel horizontal segments of adjustable lengths represent the four sides. Using auxiliary circles and intersection points, construct a dynamic quadrilateral whose vertices slide along these horizontal lines. Inside the quadrilateral, display side lengths, angle measures, and right-angle or parallel markers. Add small tick marks on the bottom ruler for measuring and comparing side lengths. The overall figure emphasizes distinguishing squares, rectangles, rhombuses, parallelograms, trapezoids, and kites based on side lengths, angles, and parallelism.
The prompt above was compiled from the original drawing commands and is for reference only.