Viviani Theorem Proof by Areas
Loading the math board and drawing, please wait…
This example visually demonstrates Viviani's theorem using area calculations: the sum of distances from any interior point to the sides of a triangle equals the sum of the areas of the three triangles formed with the point as a vertex. Key concepts include triangle area, distance, vectors, and coordinate geometry. Construction involves commands like Line, Point, Circle, Polygon, Vector, Segment, Midpoint, Translate, Rotate. Suitable for high school students and math enthusiasts exploring geometric proofs and visualizations.
GeoGebra Commands & Parameters
Line(A, B) → mPoint(m) → IOrthogonalLine(I, m) → pCircle(A, B) → cLineBisector(A, B) → fIntersect(c, f) → C, DLine(D, m) → nPolygon(D, B, A) → t1, a, d, bPoint(d) → GOrthogonalLine(G, d) → gPoint(b) → FOrthogonalLine(F, b) → hIntersect(h, g) → PLine(P, n) → qIntersect(p, q) → KOrthogonalLine(P, a) → iIntersect(i, a) → HCircle(K, Distance[P, H]) → eIntersect(e, p) → L, MVector(P, M) → v_1Segment(H, P) → jSegment(F, P) → kSegment(P, G) → lIntersect(n, p) → JSegment(D, J) → rSegment(B, I) → sSegment(I, K) → tMidpoint(l) → EMidpoint(K, I) → NVector(E, N) → uVector(H, M) → vVector(P, K) → wVector(F, J) → u_1Segment(Translate[P, Vector[(Animation / 10 * u)]], Translate[G, Vector[(Animation / 10 * u)]]) → i'Translate(P, Vector[(Animation / 10 * w)]) → P'Translate(H, Vector[(Animation / 10 * v)]) → H'Translate(F, Vector[(Animation / 10 * u_1)]) → F'Translate(P, Vector[(Animation / 10 * v_1)]) → P'_1Segment(H', P') → g_1Segment(F', P'_1) → f_1Segment(J, I) → h_1Angle(A, F, P) → αAngle(P, H, B) → βAngle(P, G, A) → γPolygon(D, P, B) → t2, b_1, d_1, p_1Polygon(D, P, A) → t3, a_1, d_2, p_2Polygon(A, P, B) → t4, b_2, a_2, p_3Vector(A, O) → w_1Translate(D, Vector[(Animation / 10 * w_1)]) → D'Translate(B, Vector[(Animation / 10 * w_1)]) → B'Translate(A, Vector[(Animation / 10 * w_1)]) → A'Polygon(D', B', A') → t1', a', d', b'Translate(A, Vector[(Animation / 10 * w_1)]) → A'_1Translate(P, Vector[(Animation / 10 * w_1)]) → P'_2Vector(A, H_1) → c_1Translate(B, Vector[(Animation / 10 * w_1)]) → B'_1Translate(A, Vector[(Animation / 10 * c_1)]) → A'_2Translate(P, Vector[(Animation / 10 * c_1)]) → P'_3Translate(B, Vector[(Animation / 10 * c_1)]) → B'_2Polygon(A'_2, P'_3, B'_2) → t4', b'_2, a'_2, p'_3Segment(Translate[P, Vector[(Animation / 10 * c_1)]], Translate[G, Vector[(Animation / 10 * c_1)]]) → i_1Vector(D, B'_2) → e_1Translate(D, Vector[(Animation / 10 * e_1)]) → D'_1Translate(P, Vector[(Animation / 10 * e_1)]) → P'_4Translate(A, Vector[(Animation / 10 * e_1)]) → A'_3Rotate(D, Animation, D) → D'_2Rotate(P, Animation, D) → P'_5Rotate(A, Animation, D) → A'_4Rotate(D, If[Animation < 8.38, Animation / 10, 8.38], D) → D'_3Rotate(P, If[Animation < 8.38, Animation / 10, 8.38], D) → P'_6Rotate(A, If[Animation < 8.38, Animation / 10, 8.38], D) → A'_5Polygon(D'_3, P'_6, A'_5) → t3'_1, a'_5, d'_3, p'_6Translate(D'_3, Vector[(Animation / 10 * e_1)]) → QTranslate(P'_6, Vector[(Animation / 10 * e_1)]) → RTranslate(A'_5, Vector[(Animation / 10 * e_1)]) → SPolygon(Q, R, S) → t5, s_1, q_1, r_1Rotate(D, Animation, B) → D'_4Rotate(P, Animation, B) → P'_7Rotate(B, Animation, B) → B'_3Rotate(D, If[Animation < 4.18, Animation / 10, 4.18], B) → D'_5Rotate(P, If[Animation < 4.18, Animation / 10, 4.18], B) → P'_8Rotate(B, If[Animation < 4.18, Animation / 10, 4.18], B) → B'_4Polygon(D'_5, P'_8, B'_4) → t2', b'_4, d'_5, p'_8Vector(B, S) → j_1Translate(D'_5, Vector[(Animation / 10 * j_1)]) → TTranslate(P'_8, Vector[(Animation / 10 * j_1)]) → UTranslate(B'_4, Vector[(Animation / 10 * j_1)]) → VPolygon(T, U, V) → t2'', v_2, t_1, u_2OrthogonalLine(R, r_1) → k_1OrthogonalLine(U, u_2) → l_1Intersect(k_1, r_1) → WIntersect(l_1, u_2) → ZSegment(R, W) → m_1Segment(U, Z) → n_1OrthogonalLine(D', d') → f_2Intersect(f_2, d') → A_1Segment(D', A_1) → g_2Midpoint(g_2) → B_1Midpoint(i_1) → C_1Midpoint(m_1) → D_1Intersect(p'_3, i_1) → E_1Midpoint(U, Z) → F_1Segment(D, P) → h_2Segment(P, B) → i_2Segment(P, A) → j_2