Derivation of Triangle Area Formula: Dissection and Rearrangement
2011-10-01 11:58
This example demonstrates the derivation of the triangle area formula by dissecting and rearranging a triangle into a rectangle. Using GeoGebra commands such as midpoint, orthogonal line, polygon, and rotation, it dynamically illustrates the conservation of area during shape transformation, helping students understand the geometric essence of the formula.
<?xml version="1.0" encoding="utf-8"?>
<geogebra format="4.0" id="cb772c02-fb60-42c4-9ba4-e028d71e3e44" xsi:noNamespaceSchemaLocation="http://www.geogebra.org/ggb.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<gui>
<window width="466" height="395" />
<perspectives>
<perspective id="tmp">
<panes>
<pane location="" divider="0.4206008583690987" orientation="1" />
</panes>
<views>
<view id="4" toolbar="0 || 2020 , 2021 , 2022 , 66 || 2001 , 2003 , 2002 , 2004 , 2005 || 2040 , 2041 , 2042 , 2044 , 2043" visible="false" inframe="false" stylebar="false" location="1,1" size="300" window="100,100,600,400" />
<view id="1" visible="true" inframe="false" stylebar="false" location="1" size="450" window="100,100,600,400" />
<view id="2" visible="false" inframe="false" stylebar="false" location="3" size="196" window="100,100,250,400" />
<view id="16" visible="false" inframe="true" stylebar="false" location="1" size="150" window="50,50,500,500" />
<view id="32" visible="false" inframe="true" stylebar="true" location="1" size="150" window="50,50,500,500" />
<view id="64" visible="false" inframe="true" stylebar="false" location="1" size="150" window="50,50,500,500" />
</views>
<toolbar show="true" items="0 39 59 || 1 501 67 , 5 19 , 72 | 2 15 45 , 18 65 , 7 37 | 4 3 8 9 , 13 44 , 58 , 47 || 16 51 64 , 70 | 10 34 53 11 , 24 20 22 , 21 23 | 55 56 57 , 12 || 36 46 , 38 49 50 , 71 | 30 29 54 32 31 33 | 17 26 62 , 14 66 68 | 25 52 60 61 || 40 41 42 , 27 28 35 , 6 || 100001 100002 " />
<input show="true" cmd="true" top="false" />
</perspective>
</perspectives>
<labelingStyle val="2"/>
<font size="12"/>
<graphicsSettings javaLatexFonts="false"/>
<consProtColumns col0="true" col1="true" col2="false" col3="true" col4="false" col5="true" col6="true" col7="false"/>
<consProtocol useColors="true" addIcons="false" showOnlyBreakpoints="false"/>
</gui>
<euclidianView>
<size width="450" height="229"/>
<coordSystem xZero="164.17212380070453" yZero="279.65130536713116" scale="35.959150221189105" yscale="35.95915022118911"/>
<evSettings axes="false" grid="false" gridIsBold="false" pointCapturing="3" rightAngleStyle="1" checkboxSize="13" gridType="0"/>
<bgColor r="255" g="255" b="255"/>
<axesColor r="0" g="0" b="0"/>
<gridColor r="192" g="192" b="192"/>
<lineStyle axes="1" grid="10"/>
<axis id="0" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true" tickDistance="1.0"/>
<axis id="1" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true" tickDistance="1.0"/>
</euclidianView>
<kernel>
<continuous val="false"/>
<decimals val="2"/>
<angleUnit val="degree"/>
<algebraStyle val="0"/>
<coordStyle val="0"/>
<angleFromInvTrig val="false"/>
</kernel>
<scripting blocked="false" disabled="false"/>
<construction title="" author="" date="">
<element type="point" label="A">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="3.193286701520343" y="5.746835064121199" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<element type="point" label="B">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="-0.8112573189650851" y="2.74342704875713" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Segment">
<input a0="A" a1="B"/>
<output a0="a"/>
</command>
<element type="segment" label="a">
<show object="true" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="3.003408015364069" y="-4.004544020485429" z="13.422711118040851"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="point" label="C">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="5.974220049079657" y="2.8546643826595033" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Segment">
<input a0="B" a1="C"/>
<output a0="b"/>
</command>
<element type="segment" label="b">
<show object="true" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-0.11123733390237334" y="6.7854773680447416" z="-18.705704251493746"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Segment">
<input a0="A" a1="C"/>
<output a0="c"/>
</command>
<element type="segment" label="c">
<show object="true" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="2.8921706814616956" y="2.7809333475593134" z="-25.21709544837647"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Midpoint">
<input a0="a"/>
<output a0="D"/>
</command>
<element type="point" label="D">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.191014691277629" y="4.245131056439164" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Midpoint">
<input a0="c"/>
<output a0="E"/>
</command>
<element type="point" label="E">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="4.5837533753" y="4.300749723390351" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="OrthogonalLine">
<input a0="D" a1="b"/>
<output a0="d"/>
</command>
<element type="line" label="d">
<show object="false" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-6.7854773680447416" y="-0.11123733390237334" z="8.553820293457605"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
</element>
<command name="OrthogonalLine">
<input a0="E" a1="b"/>
<output a0="e"/>
</command>
<element type="line" label="e">
<show object="false" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-6.7854773680447416" y="-0.11123733390237334" z="31.581358721808154"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
</element>
<command name="Intersect">
<input a0="b" a1="d"/>
<output a0="F"/>
</command>
<element type="point" label="F">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="55.96098134187595" y="127.87863701597335" z="46.055076856701106"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Intersect">
<input a0="e" a1="b"/>
<output a0="G"/>
</command>
<element type="point" label="G">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="212.2138221892292" y="130.4401589970775" z="46.055076856701106"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Polygon">
<input a0="D" a1="F" a2="B"/>
<output a0="poly1" a1="b_1" a2="d_1" a3="f"/>
</command>
<element type="polygon" label="poly1">
<lineStyle thickness="2" type="0" typeHidden="1"/>
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
</element>
<element type="segment" label="b_1">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.468485228361108" y="0.02407352833378873" z="-1.851182763670098"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="d_1">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0.033218779320926206" y="-2.0263455385765026" z="5.586080138510299"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="f">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.5017040076820343" y="2.002272010242714" z="-6.711355559020426"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Polygon">
<input a0="E" a1="G" a2="C"/>
<output a0="poly2" a1="c_1" a2="e_1" a3="g"/>
</command>
<element type="polygon" label="poly2">
<lineStyle thickness="2" type="0" typeHidden="1"/>
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
</element>
<element type="segment" label="c_1">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.4684852283611085" y="0.02407352833378873" z="-6.834708342400992"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="e_1">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-0.022399887630260906" y="1.3663931454458682" z="-3.76677198723657"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="g">
<show object="false" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.4460853407308476" y="-1.390466673779657" z="12.608547724188233"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Polygon">
<input a0="A" a1="D" a2="F" a3="G" a4="E"/>
<output a0="poly3" a1="a_1" a2="d_2" a3="f_1" a4="g_1" a5="e_2"/>
</command>
<element type="polygon" label="poly3">
<lineStyle thickness="2" type="0" typeHidden="1"/>
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
</element>
<element type="segment" label="a_1">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.5017040076820347" y="-2.0022720102427143" z="6.711355559020427"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="d_2">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.468485228361108" y="0.02407352833378873" z="-1.851182763670098"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="f_1">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-0.055618666951186224" y="3.3927386840223708" z="-9.352852125746873"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="g_1">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.4684852283611085" y="-0.02407352833378873" z="6.834708342400992"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="e_2">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.446085340730848" y="-1.3904666737796565" z="12.608547724188234"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="angle" label="α">
<value val="0.0"/>
<slider min="0" max="180*°" absoluteScreenLocation="true" width="72.0" x="100.0" y="68.0" fixed="false" horizontal="true"/>
<show object="true" label="true"/>
<objColor r="0" g="100" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="1"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<arcSize val="30"/>
<animation step="0.02" speed="1" type="0" playing="false"/>
</element>
<command name="Rotate">
<input a0="D" a1="-α" a2="D"/>
<output a0="D'"/>
</command>
<element type="point" label="D'">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.191014691277629" y="4.245131056439164" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Rotate">
<input a0="F" a1="-α" a2="D"/>
<output a0="F'"/>
</command>
<element type="point" label="F'">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="55.96098134187595" y="127.87863701597335" z="46.055076856701106"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Rotate">
<input a0="B" a1="-α" a2="D"/>
<output a0="B'"/>
</command>
<element type="point" label="B'">
<show object="false" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-0.8112573189650849" y="2.74342704875713" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Polygon">
<input a0="D'" a1="F'" a2="B'"/>
<output a0="poly1'" a1="b'" a2="d'" a3="f'"/>
</command>
<element type="polygon" label="poly1'">
<lineStyle thickness="2" type="0" typeHidden="1"/>
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
</element>
<element type="segment" label="b'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.468485228361108" y="0.02407352833378873" z="-1.851182763670098"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="d'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0.033218779320926206" y="-2.0263455385765026" z="5.586080138510299"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="f'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.5017040076820343" y="2.002272010242714" z="-6.711355559020425"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Rotate">
<input a0="E" a1="α" a2="E"/>
<output a0="E'"/>
</command>
<element type="point" label="E'">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="4.5837533753" y="4.300749723390351" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Rotate">
<input a0="G" a1="α" a2="E"/>
<output a0="G'"/>
</command>
<element type="point" label="G'">
<show object="false" label="false"/>
<objColor r="64" g="64" b="64" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="212.2138221892292" y="130.4401589970775" z="46.055076856701106"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Rotate">
<input a0="C" a1="α" a2="E"/>
<output a0="C'"/>
</command>
<element type="point" label="C'">
<show object="false" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="5.974220049079657" y="2.8546643826595033" z="1.0"/>
<pointSize val="3"/>
<pointStyle val="0"/>
</element>
<command name="Polygon">
<input a0="E'" a1="G'" a2="C'"/>
<output a0="poly2'" a1="c'" a2="e'" a3="g'"/>
</command>
<element type="polygon" label="poly2'">
<lineStyle thickness="2" type="0" typeHidden="1"/>
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
</element>
<element type="segment" label="c'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1.4684852283611085" y="0.02407352833378873" z="-6.834708342400992"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="e'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-0.022399887630260906" y="1.3663931454458682" z="-3.76677198723657"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<element type="segment" label="g'">
<show object="true" label="false"/>
<objColor r="153" g="51" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1.4460853407308476" y="-1.390466673779657" z="12.608547724188233"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<eqnStyle style="implicit"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
</construction>
</geogebra>