Dissectiepuzzels


1.                Inleiding

Op de tekening hierboven zie je een twaalfpuntige ster die verknipt kan worden in zeven puzzelstukken. De zeven puzzelstukken kunnen opnieuw samengelegd worden tot een Latijns kruis. Dit staaltje van meetkundig vakmanschap werd uitgedacht door Harry Lindgren 1912 in Newcastle-on-Tyne, † 1992 in Canberra), de grootste ontwerper van dissectiepuzzels van vorige eeuw. De grootste verzamelaar van dissectiepuzzels op deze aardbol is ongetwijfeld, Greg Fredrickson, professor computerwetenschappen aan de Pensylvania State University. Hij schreef recent twee overzichtswerken: ‘dissections: plane and fancy’ (1997) en ‘hinged dissections: swinging en twisting’ (2002). De meeste ontwerpen in deze boeken handelen over stervormige figuren:

 

 

2.              Twaalfpuntige ster

In dit computerpracticum maken we een bewegende animatie waarbij een {12/5}-ster omgevormd wordt in een Latijns kruis. We starten hiervoor het programma cabri en openen het menubestand ‘animatiekit2.men’, ontworpen door collega Dirk Danckaert, waarvoor mijn dank. In deze animatiekit zitten allerlei macro’s die dienen om puzzelstukken glijdend te laten verschuiven en roteren.

Met de knop voor ‘regelmatige veelhoek’ tekenen we een {12/5}-ster. Het getal 12 staat voor het aantal punten, het getal 5 betekent dat elke punt moet verbonden worden met zijn vijfde opvolger. Op deze ster zijn uitsluitend de 12 toppunten aangeduid met stippen. Om twaalf andere binnenpunten aan te stippen is een constructie nodig. Teken twee snijdende zijlijnen, zet een stip op hun snijding, teken een gecentreerde cirkel door dit punt, zet stippen op de 12 snijpunten van deze hulpcirkel met de {12/5}-ster.

 

      

 

Teken vervolgens de zeven puzzelstukken met de knop voor ‘veelhoeken’. In deze tekst proberen we het grootste puzzelstuk door een animatie op de juiste plaats binnen het Latijnse kruis te schuiven en te draaien. Voor de andere puzzelstukken verloopt het analoog. Hopelijk kan je je uit de slag trekken zonder bijkomende uitleg voor de andere puzzelstukken.

 

       

 

3.              De animatiestrook

Teken bovenaan je scherm een animatiestrook. Dit is een lijnstuk waarop een dikke stip beweegt die, naargelang hij van links naar rechts schuift, de vordering van de animatie weergeeft. We willen een animatie realiseren in 16 onderdelen. Daarom verdeel je de animatiestrook best in 16 gelijke delen met de knop voor het ‘midden’ van een lijnstuk.

 

4.              Animatie van verschuiving in het tweede interval van de animatiestrook

In het eerste interval van de animatiestrook moet dit puzzelstuk gewoon blijven liggen. Ook deze (domme) actie vraagt om geprogrammeerd te worden. We programmeren het ‘blijvenliggen’ als allerlaatste instructie.

 

 

In het tweede interval van de animatiestrook moet het puzzelstuk geleidelijk opschuiven naar een vooraf bepaalde plaats. Deze plaats leggen we vast door een vector te tekenen vanuit het rechtereindpunt van dit puzzelstuk. Daarna gebruik je de knop voor een ‘vloeiende verschuiving’ (klik eerst op het puzzelstuk, daarna op de verschuivingsvector, daarna op het bewegende animatiepunt en daarna op het linker- en rechtereindpunt van het tweede interval). Het oorspronkelijke puzzelstuk verdwijnt en wordt vervangen door een bewegend puzzelstuk, controleer dit door met het animatiepunt te schuiven. Indien het bewegende puzzelstuk een onvolmaaktheid vertoont (bijvoorbeeld bij concave veelhoeken) moet je het overdekken met een meer geschikte veelhoek en moet je de mismaakte veelhoek daarna verbergen. Je kan het bewegende puzzelstuk naar hartelust inkleuren en omranden.

 

5.              Animatie van rotatie in het derde interval van de animatiestrook

In het derde interval van de animatie willen we een rotatie van het verschoven puzzelstuk programmeren. Eerst roepen we het verborgen puzzelstuk in de {12/5}-ster terug. We verschuiven dit puzzelstuk in één sprong volgens de verschuivingsvector. Zo vinden we een geschikte beginsituatie om de rotatie aan te vatten. Verder hebben we nog een schatting nodig over hoeveel graden tegenwijzerzin dit puzzelstuk moet gedraaid worden. Deze schatting (hier: 99°) zetten we in een getallenveld aan de zijkant van het scherm.

 

 

Gebruik nu de knop ‘vloeiende draai links’ (klik eerst op het onverdraaide puzzelstuk, daarna op het rotatiecentrum, vervolgens op de draaihoek, dan op het animatiepunt en ten slotte op de linker- en rechtergrens van het derde interval). Het oorspronkelijke puzzelstuk verdwijnt en wordt vervangen door een bewegend puzzelstuk, controleer dit door met het animatiepunt te schuiven. Indien het bewegende puzzelstuk een onvolmaaktheid vertoont (bijvoorbeeld bij concave veelhoeken) moet je het overdekken met een meer geschikte veelhoek en moet je de mismaakte veelhoek daarna verbergen. Je kan het bewegende puzzelstuk naar hartelust inkleuren en omranden.

 

 

Mocht je ontevreden zijn over de vooropgestelde rotatiehoek (hier: 99°) dan kan je deze hoek nadien nog aanpassen.

 

6.              Animatie van rust vanaf het vierde interval van de animatiestrook

Vanaf het vierde interval (nr. 3) tot het einde (nr. 16) moet het puzzelstuk gewoon roerloos op de eindpositie blijven staan. Dit gaat als volgt. Roep het verborgen en verschoven puzzelstuk weer terug en roteer het in één sprong over de aangegeven hoek (hier: 99°). Zo vinden we een gepaste beginsituatie voor de animatie van rust. Daarna gebruiken we de knop ‘boolefunctie 0|1|0’ (klik eerst op het animatiepunt en daarna op het linker- en rechtergrenspunt van het interval). Je verkrijgt dan een getalwaarde die 1 is tussen het 3de en 16de deelpunt en O buiten deze deelpunten. Dit boolegetal drop je aan de zijkant van je scherm.

 

 

Nu neem je van deze laatste veelhoek het beeld door een homothetie (klik op de veelhoek, op een willekeurig centrum en op de boolefunctie). Wanneer je het animatiepunt voorbij het getalletje 3 schuift zal je merken dat er twee puzzelstukken boven elkaar getekend zijn: het eerst getekende puzzelstuk mag je verbergen, het laatst getekende (het beeld van het eerst getekende onder de homothetie) mag je inkleuren. Test uit of de hele animatie van dit puzzelstuk werkt.

 

 

7.               Animatie van rust in het eerste interval van de animatiestrook

Zoals je kunt raden werkt deze fase zoals de vorige. Maak een boolefunctie die 1 is in het eerste interval van de animatie en 0 erbuiten. Zoek het beeld van het originele puzzelstuk door een homothetie met een willekeurig centrum en een factor gelijk aan deze boolewaarde enz…

 

8.              Andere puzzelstukken

 

Voor de volgende puzzelstukken kan je al deze stappen herhalen. Je reserveert telkens één interval voor een verschuiving en één interval voor een rotatie van een puzzelstuk. Op de bovenstaande figuur zie je dat er al drie puzzelstukken geanimeerd zijn. Wanneer je het laatste puzzelstuk hebt afgewerkt verberg je alle overbodige getallenvelden en stippen. Het resultaat kan eruit zien zoals hieronder … maar dan minder statisch. Als je een animatie afspeelt zal er in het eerste interval niets anders te zien zijn dan een twaalfpuntige ster in zeven fragmenten gebroken. In het laatste interval zie je niets anders dan een Latijns kruis in zeven fragmenten. Tussendoor aanschouw je vol bewondering een vloeiende metamorfose.

 

 

9. Downloaden van dissectiefiles voor cabri

Wie er echt tegenop ziet zelf animaties te maken van dissecties kan hieronder enkele voorbeelden downloaden:

supernova : twaalfpuntige ster explodeert in drie kleinere sterren

tangram1 : maak van een vierkant een zittend konijn

tangram2: maak van een vierkant een vierkant met een strikvormige uitsparing

scharnierpuzzel van Henry Ernest Dudeney: van vierkant naar gelijkgzijdige driehoek

kunstwerk van Harry Lindgren: van twaalfpuntige ster naar latijns kruis

van gelijkzijdige driehoek naar Davidster

van achthoek naar achtpuntige ster

van vierkant naar achtpuntige ster