<div dir="ltr"><div><div><br></div>Ya'll know about @property and some my remember a few months back I was sharing about a Circle type where you could change the radius, area, or perimeter, by simply assigning to these attributes, and the other two would magically co-vary.  <br><br>Likely many people have thought of that. Great way to teach / learn geometry.<br><br>Like this:<br><br></div><div>>>> c = Circle()<br>>>> c.area = 50<br></div><div>>>> c.radius<br>3.989422804014327<br>>>> c.circumference = 5<br></div><div>>>> c.radius<br>0.7957747154594768<br><br><a href="https://github.com/4dsolutions/Python5/blob/master/circle2.py">https://github.com/4dsolutions/Python5/blob/master/circle2.py</a><br><br>I don't think a math teacher needs to painstakingly go through all the 
code before using this API. Go ahead and work with finished programs. 
We'll look at the source code by and by.<br><br></div><div>The goal is to interact with the instances as modeling geometric shapes with co-varying dimensions.<br><br></div><div>I haven't done a Triangle class that way yet. That'd be fun to do.  <br><br>Nor a Tetrahedron, in any generic way, though I have some components lying around. :-D<br></div><div><br></div><div>Having only one dimension change at a time, leaving others free to co-vary, makes for a good study in ripple effects. <br><br></div><div>I've recently co-developed, with David Koski, another specimen of geometric object with co-varying properties. <br><br>It's called a TetraBook and visually consists of a triangular book meaning both front and back covers are equilateral triangles, all edges 2, with a shared hinge (the book's spine). <br><br>Imagine this book flat open on its back, with a single triangular page wagging back and forth, another equilateral triangle of edges 2. <br><br>When it's all the way to one side, flat against either cover, there's no volume to speak of.  <br><br>When the page turns, however, the segments from page tip to each cover tip define two complementary tetrahedrons, the turning page their common face.<br><br></div><div>What the TetraBook instance is allows is I can assign any of five attributes and, thanks to property methods behind the scenes, the other four with co-vary.  <br><br>The angle of the page, the lengths of the tip-to-tip segments, the volumes of the complementary tetrahedrons (same), their altitudes (same).  <br><br>I can even assign volume in two different ways, depending on what I consider my unit of volume (regular tetrahedron or right tetrahedron, the latter corresponding to a cube volume of edges 1).<br><br></div><div>On Github:<br><a href="https://github.com/4dsolutions/Python5/blob/master/tetrabook.py">https://github.com/4dsolutions/Python5/blob/master/tetrabook.py</a><br></div><div>(has a couple dependencies, also there: qrays.py and tetravolume.py)<br><br></div><div>I recommend this approach to other math teachers.  <br><br>If your school also has a computer science department, so much the better right?<br></div><div><br></div><div>Kirby<br><br></div><div>lambda calc track<br></div><div>oregon curriculum network<br></div><div><a href="http://4dsolutions.net/ocn">4dsolutions.net/ocn</a><br><a href="https://www.youtube.com/channel/UCr7TZxfhsqbeiQzLnHdgPgA">https://www.youtube.com/channel/UCr7TZxfhsqbeiQzLnHdgPgA</a><br><br></div></div>