Viviani's Theorem Demonstration
Loading the math board and drawing, please wait…
This example demonstrates Viviani's theorem within a triangle, showing that the sum of the distances from the centroid to the three sides equals one-third of the triangle's altitude. Key math concepts include centroid, altitude, distance, and Viviani's theorem. Construction involves commands like Circle, Point, Translate, Polygon, OrthogonalLine, Intersect, Line, Segment, Centroid, Max, Rotate, Midpoint, and Vector to build the triangle, altitudes, centroid, and related segments. Suitable for high school mathematics students and teachers to understand and verify the theorem.
GeoGebra Commands & Parameters
Circle(V, W) → c_1Point(c_1, b_1 / 8) → DTranslate(D, Vector[(c * Vector[(4, 0)])]) → D'Translate(A, Vector[(c * Vector[(4, 0)])]) → A'Point(xAxis) → BTranslate(B, Vector[(c * Vector[(4, 0)])]) → B'Polygon(A, B, 3) → poly1, f, g, h, COrthogonalLine(D, Segment[A, C]) → jIntersect(j, Segment[A, C]) → FTranslate(F, Vector[(c * Vector[(4, 0)])]) → F'OrthogonalLine(D, Segment[B, C]) → iIntersect(i, Segment[B, C]) → ETranslate(E, Vector[(c * Vector[(4, 0)])]) → E'Line(D', Rotate[E', 30°, D']) → pLine(D', Rotate[E', (-(30°)), D']) → qTranslate(C, Vector[(c * Vector[(4, 0)])]) → C'_1Segment(A', C'_1) → sIntersect(s, Line[D', Rotate[F', (-(30°)), D']]) → KIntersect(q, s) → PTranslate(C, Vector[(c * Vector[(4, 0)])]) → C'Segment(B', C') → rIntersect(p, r) → HIntersect(q, r) → OCentroid(Polygon[O, P, C'_1]) → NIntersect(q, s) → JPolygon(K, D', J) → t1, j_2, k_2, d'Centroid(t1) → LMax(Min[a, 1], 0) → bSegment(D, ((1 - b) * D) + (b * F)) → nTranslate(poly1, Vector[(c * Vector[(4, 0)])]) → poly1'OrthogonalLine(D, Segment[A, B]) → kIntersect(k, Segment[A, B]) → GSegment(D, ((1 - b) * D) + (b * G)) → lSegment(D, ((1 - b) * D) + (b * E)) → mTranslate(m, Vector[(c * Vector[(4, 0)])]) → m'Translate(G, Vector[(c * Vector[(4, 0)])]) → G'Translate(A, Vector[(c * Vector[(4, 0)])]) → A'_1Translate(B, Vector[(c * Vector[(4, 0)])]) → B'_1Segment(A'_1, B'_1) → tIntersect(q, r) → ISegment(K, ((1 - d) * K) + (d * J)) → j_1Segment(H, ((1 - d) * H) + (d * I)) → k_1Polygon(H, I, D') → t2, l_1, h_2, i_2Centroid(t2) → MRotate(Rotate[K, ((-e) * 120°), L], ((-o) * 120°), N) → K'Rotate(Rotate[J, ((-e) * 120°), L], ((-o) * 120°), N) → J'Rotate(Rotate[D', ((-e) * 120°), L], ((-o) * 120°), N) → D''Translate(Rotate[H, ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → H'Translate(Rotate[I, ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → I'Translate(Rotate[D', ((-o) * 120°), N], Vector[((0.5 * u) * Vector[K', H])]) → D''_1Intersect(p, t) → QLine(D', Rotate[G', 30°, D']) → m_1Intersect(m_1, t) → RSegment(R, ((1 - d) * R) + (d * Q)) → q_1Midpoint(Segment[A, B]) → SMidpoint(Segment[C, B]) → TMidpoint(Segment[C, A]) → UPolygon(D', R, Q) → t3, q_2, r_1, r_2Translate(D', Vector[(u * Vector[G, S])]) → D''_2Translate(R, Vector[(u * Vector[G, S])]) → R'Translate(Q, Vector[(u * Vector[G, S])]) → Q'Segment(A, B) → s_1Segment(C, B) → t_1Segment(C, A) → a_1Line(D', t) → f_1Intersect(s, f_1) → ZIntersect(r, k_1) → A_1Intersect(r, k_1) → B_1Intersect(f_1, r) → C_1Rotate(Polygon[Z, C_1, ((1 - e) * C') + (e * Mirror[C', Segment[Z, C_1]])], ((-u) * 60°), C_1) → t4Vector((x(C) - x(D), 0)) → vSegment(Z, ((1 - d) * Z) + (d * C_1)) → g_1Rotate(Segment[Translate[D', Vector[(o * Vector[F', Z])]], Translate[D_1, Vector[(o * Vector[F', Z])]]], ((-u) * 60°), C_1) → m'_1Rotate(Translate[n, Vector[(c * Vector[(4, 0)]) + (o * Vector[F', Z])]], ((-u) * 60°), C_1) → n'Translate(l, Vector[(c * Vector[(4, 0)]) + (w * v)]) → l'