Geometric Derivation and Unfolding of Circle Area
2020-11-04 07:45
This applet demonstrates the geometric derivation of the circle area formula. By dividing a circle into sectors and rearranging them, it visually shows how the area unfolds into an approximate rectangle. Users can observe the limiting process as the number of divisions increases, helping students understand the formula's geometric meaning and basic calculus concepts.
<?xml version="1.0" encoding="utf-8"?>
<geogebra format="5.0" version="5.0.613.0" app="classic" platform="w" id="9ccd4eea-0a26-45f5-86d2-0edc5c70f024" xsi:noNamespaceSchemaLocation="http://www.geogebra.org/apps/xsd/ggb.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<gui>
<window width="690" height="639" />
<perspectives>
<perspective id="tmp">
<panes>
<pane location="" divider="0.39565217391304347" 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="true" location="1,1" size="300" window="100,100,600,400" />
<view id="8" toolbar="1001 | 1002 | 1003 || 1005 | 1004 || 1006 | 1007 | 1010 || 1008 1009 || 66 68 || 6" visible="false" inframe="false" stylebar="true" location="1,3" size="300" window="100,100,600,400" />
<view id="4097" visible="false" inframe="false" stylebar="true" location="1,1" size="395" window="853,171,701,917" />
<view id="512" toolbar="0 | 1 501 5 19 , 67 | 2 15 45 18 , 7 37 | 514 3 9 , 13 44 , 47 | 16 51 | 551 550 11 , 20 22 21 23 , 55 56 57 , 12 | 69 | 510 511 , 512 513 | 533 531 , 534 532 , 522 523 , 537 536 , 535 , 538 | 521 520 | 36 , 38 49 560 | 571 30 29 570 31 33 | 17 | 540 40 41 42 , 27 28 35 , 6 , 502" visible="false" inframe="false" stylebar="true" location="1,1" size="1168" window="100,100,600,400" />
<view id="2" visible="false" inframe="false" stylebar="true" location="3" size="273" tab="ALGEBRA" window="100,100,600,400" />
<view id="16" visible="false" inframe="false" stylebar="false" location="1" size="150" window="50,50,500,500" />
<view id="32" visible="false" inframe="false" stylebar="true" location="1" size="150" window="50,50,500,500" />
<view id="64" toolbar="0" visible="false" inframe="false" stylebar="true" location="1" size="150" window="50,50,500,500" />
<view id="128" visible="false" inframe="false" stylebar="false" location="1" size="480" window="50,50,500,500" />
<view id="70" toolbar="0 || 2020 || 2021 || 2022" visible="false" inframe="false" stylebar="true" location="1" size="150" window="50,50,500,500" />
<view id="1" visible="true" inframe="false" stylebar="true" location="" size="637" window="100,100,600,400" />
</views>
<toolbar show="false" items="0 39 73 62 | 1 501 67 , 5 19 , 72 75 76 | 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 14 68 | 30 29 54 32 31 33 | 25 17 26 60 52 61 | 40 41 42 , 27 28 35 , 6" position="1" help="false" />
<input show="false" cmd="true" top="false" />
<dockBar show="false" east="false" />
</perspective>
</perspectives>
<labelingStyle val="3"/>
<font size="18"/>
</gui>
<euclidianView>
<viewNumber viewNo="1"/>
<size width="688" height="636"/>
<coordSystem xZero="-15.520495656015951" yZero="767.4697782085038" scale="150.21029443520433" yscale="150.21029443520487"/>
<evSettings axes="false" grid="false" gridIsBold="false" pointCapturing="3" rightAngleStyle="1" checkboxSize="26" 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="11" grid="0"/>
<labelStyle axes="1" serif="true"/>
<axis id="0" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
<axis id="1" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
</euclidianView>
<kernel>
<continuous val="false"/>
<usePathAndRegionParameters val="true"/>
<decimals val="2"/>
<angleUnit val="degree"/>
<algebraStyle val="0" spreadsheet="0"/>
<coordStyle val="0"/>
</kernel>
<tableview min="-2" max="2" step="1"/>
<scripting blocked="false" disabled="false"/>
<construction title="" author="" date="">
<element type="point" label="O">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="2"/>
<labelOffset x="0" y="3"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="1.341589112874984" y="2.8324941363591805" z="1"/>
<pointSize val="5"/>
<pointStyle val="1"/>
</element>
<element type="numeric" label="n">
<value val="28"/>
<show object="true" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelOffset x="-11" y="-8"/>
<labelMode val="1"/>
<slider min="11" max="50" absoluteScreenLocation="true" width="200" x="77" y="56" fixed="false" horizontal="true" showAlgebra="true"/>
<lineStyle thickness="10" type="0" typeHidden="1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<caption val="分割条数"/>
</element>
<expression label="half" exp="ceil(n / 2)" />
<element type="numeric" label="half">
<value val="14"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="r" exp="1"/>
<element type="numeric" label="r">
<value val="1"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<animation step="0.1" speed="1" type="0" playing="false"/>
<caption val="radius"/>
</element>
<expression label="B" exp="O + (0, (-r))" type="point" />
<element type="point" label="B">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelOffset x="-10" y="28"/>
<labelMode val="0"/>
<coords x="1.341589112874984" y="1.8324941363591805" z="1"/>
<pointSize val="2"/>
<pointStyle val="6"/>
</element>
<command name="ToComplex">
<input a0="Vector[O, B]"/>
<output a0="z_{1}"/>
</command>
<element type="vector" label="z_{1}">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="-1" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<coordStyle style="complex"/>
<startPoint exp="O"/>
</element>
<command name="Sequence">
<input a0="O + (z_{1} * ℯ^((((ί * k) * 2) * π / n)))" a1="k" a2="0" a3="n"/>
<output a0="Dlist"/>
</command>
<element type="list" label="Dlist">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<element type="numeric" label="t">
<value val="0"/>
<show object="true" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<slider min="0" max="n + 2" absoluteScreenLocation="true" width="200" x="82" y="124" fixed="false" horizontal="true" showAlgebra="true"/>
<lineStyle thickness="10" type="0" typeHidden="1"/>
<animation step="0.1" speed="1" type="0" playing="false"/>
</element>
<command name="Circle">
<input a0="O" a1="r"/>
<output a0="c"/>
</command>
<element type="conic" label="c">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<eigenvectors x0="1" y0="0" z0="1.0" x1="0" y1="1" z1="1.0"/>
<matrix A0="1" A1="1" A2="8.822884380293825" A3="0" A4="-1.341589112874984" A5="-2.8324941363591805"/>
<eqnStyle style="specific"/>
</element>
<command name="Sequence">
<input a0="CircleSector[O, Dlist(k), Dlist(k + 1)]" a1="k" a2="1" a3="half"/>
<output a0="sec1"/>
</command>
<element type="list" label="sec1">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<expression label="text1" exp=""1. 旋转用复数乘法完成 $O+z_0\times e^{i*2k\pi/n},k\in[0,n-1]$, 得到复数序列 l1
2. 扇形用序列,为了区分前后两组,可以分开:
 sec1=Sequence(CircularSector(O,l1(k),l1(k+1)),k,0,ceil(n/2))
 sec2=Sequence(CircularSector(O,l1(k),l1(k+1)),k,ceil(n/2)+1,n-1)
 这里的复数序列,自动转换成了点序列,无须进行转换操作。
 ""/>
<element type="text" label="text1">
<show object="false" label="false" ev="40"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<isLaTeX val="true"/>
<font serif="true" sizeM="1" size="0" style="0"/>
<absoluteScreenLocation x="158" y="132"/>
</element>
<expression label="θ" exp="(2 * π / n)" />
<element type="numeric" label="θ">
<value val="0.2243994752564138"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<command name="Distance">
<input a0="Dlist(1)" a1="Dlist(2)"/>
<output a0="xSeg"/>
</command>
<element type="numeric" label="xSeg">
<value val="0.22392895220661566"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<caption val="分割的弦长"/>
</element>
<command name="Sequence">
<input a0="B + ((k * xSeg), 0)" a1="k" a2="0" a3="n"/>
<output a0="Plist"/>
</command>
<element type="list" label="Plist">
<show object="false" label="true" ev="4"/>
<objColor r="255" g="127" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<element type="point" label="A">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="2.1859701141577794" y="0.04849242529361655" z="1"/>
<pointSize val="5"/>
<pointStyle val="10"/>
</element>
<command name="Segment">
<input a0="A" a1="A + ((2 * r), 0)"/>
<output a0="f"/>
</command>
<element type="segment" label="f">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="2" z="-0.0969848505872331"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<outlyingIntersections val="false"/>
<keepTypeOnTransform val="true"/>
</element>
<command name="Midpoint">
<input a0="f"/>
<output a0="C"/>
</command>
<element type="point" label="C">
<show object="false" label="false" ev="8"/>
<objColor r="153" g="204" b="0" alpha="0"/>
<layer val="1"/>
<labelMode val="0"/>
<selectionAllowed val="false"/>
<coords x="3.1859701141577794" y="0.04849242529361655" z="1"/>
<pointSize val="3"/>
<pointStyle val="1"/>
</element>
<command name="Point">
<input a0="f"/>
<output a0="M"/>
</command>
<element type="point" label="M">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelOffset x="34" y="-8"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<coords x="2.1859701141577794" y="0.04849242529361655" z="1"/>
<pointSize val="3"/>
<pointStyle val="2"/>
</element>
<command name="Sequence">
<input a0="Rotate[sec1(k), ((-Min[t, 1]) * Angle[Vector[Dlist(k), Dlist(k) + (1, 0)], Vector[Dlist(k), Dlist(k + 1)]]), Dlist(k)]" a1="k" a2="1" a3="half"/>
<output a0="rsec1"/>
</command>
<element type="list" label="rsec1">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.4000000059604645"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="0"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<command name="Sequence">
<input a0="Translate[rsec1(k), Vector[((Min[t - k, 1] * (t ≥ k)) * Vector[Dlist(k), Plist(k)])]]" a1="k" a2="1" a3="half"/>
<output a0="tsec1"/>
</command>
<element type="list" label="tsec1">
<show object="true" label="true" ev="4"/>
<objColor r="255" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="1"/>
<labelMode val="0"/>
<lineStyle thickness="1" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<command name="Sequence">
<input a0="CircleSector[O, Dlist(k), Dlist(k + 1)]" a1="k" a2="half + 1" a3="n"/>
<output a0="sec2"/>
</command>
<element type="list" label="sec2">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<command name="Sequence">
<input a0="Rotate[sec2(k - half), ((-Min[t, 1]) * Angle[Vector[Dlist(k), Dlist(k) + (-1, 0)], Vector[Dlist(k), Dlist(k + 1)]]), Dlist(k)]" a1="k" a2="half + 1" a3="n"/>
<output a0="rsec2"/>
</command>
<element type="list" label="rsec2">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="1"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<command name="UnitVector">
<input a0="Vector[Plist(1), Plist(2)]"/>
<output a0="u"/>
</command>
<element type="vector" label="u">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="1"/>
<labelMode val="0"/>
<coords x="1" y="0" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<coordStyle style="cartesian"/>
</element>
<expression label="O1" exp="Dlist(1) + ((r * u) * ℯ^((ί * (π - θ) / 2)))" type="point" />
<element type="point" label="O1">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="1"/>
<labelMode val="0"/>
<coords x="1.4535535889782918" y="2.826206346252423" z="1"/>
<coordStyle style="complex"/>
<pointSize val="2"/>
<pointStyle val="6"/>
<caption val="小扇形对应的圆心坐标"/>
</element>
<command name="Sequence">
<input a0="O1 + (k * xSeg)" a1="k" a2="0" a3="half"/>
<output a0="Olist"/>
</command>
<element type="list" label="Olist">
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="1"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<command name="Sequence">
<input a0="Translate[rsec2(k - half), Vector[((Min[t - k, 1] * (t ≥ k)) * Vector[Dlist(k), Olist(k - half + 1)])]]" a1="k" a2="half + 1" a3="n"/>
<output a0="tsec2"/>
</command>
<element type="list" label="tsec2">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="1"/>
<labelMode val="0"/>
<lineStyle thickness="1" type="0" typeHidden="1"/>
<pointSize val="5"/>
<angleStyle val="0"/>
</element>
<expression label="text2" exp=""圆面积展开示意图
1. 分割成全等的扇形
2. 先旋转后平移
3. 调高扇形数目$n$
4. 得出圆面积公式
$\approx$平行四边形面积
逼近长方形面积
5. 细分到无穷时,长方形的长
为半圆长$\pi r$,宽为半径$r$
6. 故圆面积=$\pi r^2$""/>
<element type="text" label="text2">
<show object="true" label="false" ev="40"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<bgColor r="208" g="240" b="192" alpha="255"/>
<layer val="2"/>
<labelMode val="0"/>
<isLaTeX val="true"/>
<font serif="true" sizeM="1" size="0" style="0"/>
<startPoint x="2.7553646278097665" y="4.7437540148540585" z="1"/>
</element>
</construction>
</geogebra>