Introduction

I have been creating animations for several years, and recently, I began focusing on themes inspired by the winter holidays and New Year celebrations. This GeoGebra book showcases my collection from 2023. I hope you enjoy exploring it!
If you like me work, you can support me in Patreon: [url=https://www.patreon.com/jcponce]https://www.patreon.com/jcponce[/url][br][br]∞ Thanks! :)[br][br]{\__/}[br](• . • )[br]\_/< \

GeoGebra snow

Information
This simulation has 20 GGB snowflakes[br][br]Here is another one with 40 GGB snowflakes: [url=https://www.geogebra.org/m/xkn3cuyj]GeoGebra snowing[/url] [br][br]It runs better offline: [url=https://www.geogebra.org/material/show/id/xkn3cuyj]Download GeoGebra snowing[/url]
Scripting button
# Before we must add the picture centred at the origin[br]# I used this one: https://wiki.geogebra.org/uploads/1/11/GeoGebra.svg[br][br]# Then create a Setup button with the following script[br]Ln = 1...20[br][br]Execute( Zip( "posX"+i+" = Slider(-50, 50, 0.01, 1, 200, false, true, false, false)", i, Ln ) )[br]Execute( Zip( "SetVisibleInView( posX"+i+", 1, false )", i, Ln) ) [br]Execute( Zip( "SetValue( posX"+i+", RandomBetween(-50, 50) )", i, Ln) ) [br][br]Execute( Zip( "posY"+i+" = Slider(-100, 100, 0.01, 1, 200, false, true, false, false)", i, Ln ) )[br]Execute( Zip( "SetVisibleInView( posY"+i+", 1, false )", i, Ln) ) [br]Execute( Zip( "SetValue( posY"+i+", 50 )", i, Ln) ) [br][br]Execute( Zip( "initialAngle"+i+" = RandomUniform(0, 2 * pi)", i, Ln ) )[br]Execute( Zip( "size"+i+" = RandomUniform(0.3, 1.2)", i, Ln ) )[br][br]Execute( Zip( "radius"+i+" = RandomUniform(0, 10^2)", i, Ln ) )[br][br]# Angular velocity[br]Execute( Zip( "w"+i+" = RandomBetween(1, 3)", i, Ln ) )[br][br]# time[br]time = 0[br][br]Execute( Zip( "angle"+i+" = w"+i+" * time + initialAngle"+i+"", i, Ln ) )[br][br]run = Slider(0, 1, 0.01, 1, 200, false, true, false, false)[br][br]Execute( Zip( "T"+i+" = Translate( Rotate( Dilate( pic1, size"+i+"), 2*pi*sin(angle"+i+") ), Vector( (posX"+i+", posY"+i+") ) )", i, Ln) )
Scripting Slider
# In the slider named "run" add this script in the tab On Update[br]SetValue(time, time + 0.01)[br][br]#Execute( Zip("" , i, Ln) )[br][br]Execute( Zip(" SetValue(angle"+i+", w"+i+" * time + initialAngle"+i+") " , i, Ln) )[br]Execute( Zip(" SetValue(posX"+i+", 20 + radius"+i+" * sin(angle"+i+")) " , i, Ln) )[br]Execute( Zip(" SetValue(posY"+i+", posY"+i+" - (size"+i+")^(1/2)) " , i, Ln) )[br][br]Execute( Zip(" If( posY"+i+" < -20, SetValue(posY"+i+", RandomBetween(50, 60))) " , i, Ln) )[br]Execute( Zip(" If( posY"+i+" < -20, SetValue(posX"+i+", RandomBetween(-50, 50))) " , i, Ln) )
GIF with 40 snowflakes

Geometric pattern

I saw a nice pattern in Matt's t-shirt and I thought I can make it in GeoGebra:[br][br]https://www.youtube.com/watch?v=ga9Qk38FaHM&ab_channel=Stand-upMaths[br][br]The code is a little messy but works. I will refactor in the future. :)[br][br]If you like my work, you can support me in Patreon: [br]https://www.patreon.com/jcponce[br][br]Get my recent Mathematical Art with GeoGebra ebook:[br]https://www.patreon.com/jcponce/shop/mathematical-art-with-geogebra-577631[br][br]∞ Thanks fro your support!
GGB scripting version 1
[code]A1 = (0, 0)[br]A2 = (x(A1) + 0.87, y(A1) + 0.5)[br]A3 = (x(A1) + 0.87, y(A1) + 3)[br]A4 = (x(A1), y(A1) + 3.5)[br]A5 = (x(A1) -0.87, y(A1) + 3)[br]A6 = (x(A1) - 0.87, y(A1) + 0.5)[br][br]rightSide = Polygon({A1, A2, A3, A4, A1})[br]leftSide = Polygon({A1, A4, A5, A6, A1})[br][br]rightSide' = Polygon({A1, A2, A3, A4, A1})[br]leftSide' = Polygon({A1, A4, A5, A6, A1})[br][br]block01 = {rightSide, leftSide}[br]block02 = Rotate(block01, 2pi/3, A1)[br]block03 = Rotate(block01, -2pi/3, A1)[br]block02' = Rotate(block01, 2pi/3, A1)[br]block03' = Rotate(block01, -2pi/3, A1)[br][br]centerFigure = {rightSide, leftSide, block02, block03}[br][br]#d1 = Length(A1, A4) + Length(A1, A2)[br][br]B1 = (x(A1) + 3.9, y(A1) + 2.25)[br]B2 = (x(A1), y(A1) + 4.5)[br]B3 = (x(A1) - 3.9, y(A1) + 2.25)[br]B4 = (x(A1) - 3.9, y(A1) - 2.25)[br]B5 = (x(A1), y(A1) - 4.5)[br]B6 = (x(A1) + 3.9, y(A1) - 2.25)[br][br]Execute(Zip("u"+k+" = Vector(A1, B"+k+")", k, 1...6))[br][br]#layer01 = Translate(centerFigure, u1)[br][br]Execute(Zip("layer0"+k+" = Translate(centerFigure, u"+k+")", k, 1...6))[br]Execute(Zip("layer0"+k+"' = Translate(centerFigure, u"+k+")", k, 1...6))[br][br]small01 = Rotate(Translate(block01, u2), -pi/3, B2)[br]small02 = Rotate(Translate(block01, u2), pi/3, B2)[br]small03 = Rotate(Translate(block01, u2), pi/3, A1)[br][br]small04 = Translate(Rotate(block01, pi/3, A1), u4)[br]small05 = Translate(Rotate(block01, pi, A1), u4)[br]small06 = Translate(Rotate(block01, pi, A1), u5)[br][br]small07 = Translate(Rotate(block01, pi, A1), u6)[br]small08 = Translate(Rotate(block01, -pi/3, A1), u6)[br]small09 = Translate(Rotate(block01, -pi/3, A1), u1)[br][br]small01' = Rotate(Translate(block01, u2), -pi/3, B2)[br]small02' = Rotate(Translate(block01, u2), pi/3, B2)[br]small03' = Rotate(Translate(block01, u2), pi/3, A1)[br][br]small04' = Translate(Rotate(block01, pi/3, A1), u4)[br]small05' = Translate(Rotate(block01, pi, A1), u4)[br]small06' = Translate(Rotate(block01, pi, A1), u5)[br][br]small07' = Translate(Rotate(block01, pi, A1), u6)[br]small08' = Translate(Rotate(block01, -pi/3, A1), u6)[br]small09' = Translate(Rotate(block01, -pi/3, A1), u1)[br][/code]
GGB scripting version 2
[code][/code][code]A1 = (0, 0)[br]A2 = (x(A1) + 0.87, y(A1) + 0.5)[br]A3 = (x(A1) + 0.87, y(A1) + 3)[br]A4 = (x(A1), y(A1) + 3.5)[br]A5 = (x(A1) -0.87, y(A1) + 3)[br]A6 = (x(A1) - 0.87, y(A1) + 0.5)[br]Ln = 1...6[br]Execute(Zip("SetVisibleInView(A"+k+", 1, false)", k, Ln))[br][br]rightSide = Polygon({A1, A2, A3, A4, A1})[br]leftSide = Polygon({A1, A4, A5, A6, A1})[br]SetLayer(rightSide, 4)[br]SetLayer(leftSide, 4)[br][br]rightSide' = Polygon({A1, A2, A3, A4, A1})[br]leftSide' = Polygon({A1, A4, A5, A6, A1})[br]SetLayer(rightSide', 5)[br]SetLayer(leftSide', 5)[br][br]block01 = {rightSide, leftSide}[br][br]block02 = Rotate(block01, 2pi/3, A1)[br]block03 = Rotate(block01, -2pi/3, A1)[br]SetLayer(block02, 4)[br]SetLayer(block03, 4)[br][br]block02' = Rotate(block01, 2pi/3, A1)[br]block03' = Rotate(block01, -2pi/3, A1)[br]SetLayer(block02', 5)[br]SetLayer(block03', 5)[br][br]centerFigure = {rightSide, leftSide, block02, block03}[br][br]B1 = (x(A1) + 3.9, y(A1) + 2.25)[br]B2 = (x(A1), y(A1) + 4.5)[br]B3 = (x(A1) - 3.9, y(A1) + 2.25)[br]B4 = (x(A1) - 3.9, y(A1) - 2.25)[br]B5 = (x(A1), y(A1) - 4.5)[br]B6 = (x(A1) + 3.9, y(A1) - 2.25)[br]Execute(Zip("SetVisibleInView(B"+k+", 1, false)", k, Ln))[br][br]Execute(Zip("u"+k+" = Vector(A1, B"+k+")", k, Ln))[br]Execute(Zip("SetVisibleInView(u"+k+", 1, false)", k, Ln))[br][br]Execute(Zip("first0"+k+" = Translate(centerFigure, u"+k+")", k, Ln))[br]Execute(Zip("first0"+k+"' = Translate(centerFigure, u"+k+")", k, Ln))[br][br]Execute(Zip("SetLayer(first0"+k+", 2)", k, Ln))[br]Execute(Zip("SetLayer(first0"+k+"', 3)", k, Ln))[br][br]Execute(Zip("second0"+k+" = Rotate(Translate(centerFigure, u"+k+"), pi/3, B"+k+")", k, Ln))[br]Execute(Zip("second0"+k+"' = Rotate(Translate(centerFigure, u"+k+"), pi/3, B"+k+")", k, Ln))[br][br]Execute(Zip("SetLayer(second0"+k+", 0)", k, Ln))[br]Execute(Zip("SetLayer(second0"+k+"', 1)", k, Ln))[/code]
Final version
[code]A1 = (0, 0)[br]A2 = (x(A1) + 0.87, y(A1) + 0.5)[br]A3 = (x(A1) + 0.87, y(A1) + 3)[br]A4 = (x(A1), y(A1) + 3.5)[br]A5 = (x(A1) -0.87, y(A1) + 3)[br]A6 = (x(A1) - 0.87, y(A1) + 0.5)[br]Ln = 1...6[br]Execute(Zip("SetVisibleInView(A"+k+", 1, false)", k, Ln))[br][br]rightSide = Polygon({A1, A2, A3, A4, A1})[br]leftSide = Polygon({A1, A4, A5, A6, A1})[br][br]rightSide' = Polygon({A1, A2, A3, A4, A1})[br]leftSide' = Polygon({A1, A4, A5, A6, A1})[br][br]block01 = {rightSide, leftSide}[br]block02 = Rotate(block01, 2pi/3, A1)[br]block03 = Rotate(block01, -2pi/3, A1)[br][br]block02' = Rotate(block01, 2pi/3, A1)[br]block03' = Rotate(block01, -2pi/3, A1)[br][br]centerFigure = {rightSide, leftSide, block02, block03}[br][br]B1 = (x(A1) + 3.9, y(A1) + 2.25)[br]B2 = (x(A1), y(A1) + 4.5)[br]B3 = (x(A1) - 3.9, y(A1) + 2.25)[br]B4 = (x(A1) - 3.9, y(A1) - 2.25)[br]B5 = (x(A1), y(A1) - 4.5)[br]B6 = (x(A1) + 3.9, y(A1) - 2.25)[br]Execute(Zip("SetVisibleInView(B"+k+", 1, false)", k, Ln))[br][br]Execute(Zip("u"+k+" = Vector(A1, B"+k+")", k, Ln))[br]Execute(Zip("SetVisibleInView(u"+k+", 1, false)", k, Ln))[br][br]Execute(Zip("first0"+k+" = Translate(centerFigure, u"+k+")", k, Ln))[br]Execute(Zip("first0"+k+"' = Translate(centerFigure, u"+k+")", k, Ln))[br][br]Execute(Zip("second0"+k+" = Rotate(Translate(centerFigure, u"+k+"), pi/3, B"+k+")", k, Ln))[br]Execute(Zip("second0"+k+"' = Rotate(Translate(centerFigure, u"+k+"), pi/3, B"+k+")", k, Ln))[br][br]C1 = (x(A1), y(A1) + 2.5)[br]C2 = (x(A1) + 0.87, y(A1) + 3)[br]C3 = (x(A1), y(A1) + 3.5)[br]C4 = (x(A1) - 0.87, y(A1) + 3)[br]Execute(Zip("SetVisibleInView(C"+k+", 1, false)", k, 1...4))[br][br]rom01 = Polygon({C1, C2, C3, C4})[br]rom02 = Rotate(rom01, 2pi/3)[br]rom03 = Rotate(rom01, -2pi/3)[br][br]Lk = {5, 6, 1}[br]Execute(Zip("p0"+k+" = Translate(rom01, u"+k+")", k, 1...3))[br]Execute(Zip("q0"+k+" = Translate(rom02, u"+k+")", k, 3...5))[br]Execute(Zip("r0"+k+" = Translate(rom03, u"+k+")", k, Lk))[br][br]Execute(Zip("p0"+k+"' = Translate(rom01, u"+k+")", k, 1...3))[br]Execute(Zip("q0"+k+"' = Translate(rom02, u"+k+")", k, 3...5))[br]Execute(Zip("r0"+k+"' = Translate(rom03, u"+k+")", k, Lk))[br][br]#-- Set Layers --#[br]Execute(Zip("SetLayer(second0"+k+", 0)", k, Ln))[br]Execute(Zip("SetLayer(second0"+k+"', 1)", k, Ln))[br][br]Execute(Zip("SetLayer(first0"+k+", 2)", k, Ln))[br]Execute(Zip("SetLayer(first0"+k+"', 3)", k, Ln))[br][br]Execute(Zip("SetLayer(p0"+k+", 4)", k, 1...3))[br]Execute(Zip("SetLayer(q0"+k+", 4)", k, 3...5))[br]Execute(Zip("SetLayer(r0"+k+", 4)", k, Lk))[br][br]Execute(Zip("SetLayer(p0"+k+"', 5)", k, 1...3))[br]Execute(Zip("SetLayer(q0"+k+"', 5)", k, 3...5))[br]Execute(Zip("SetLayer(r0"+k+"', 5)", k, Lk))[br][br]SetLayer(rightSide, 6)[br]SetLayer(leftSide, 6)[br]SetLayer(rightSide', 7)[br]SetLayer(leftSide', 7)[br][br]SetLayer(block02, 6)[br]SetLayer(block03, 6)[br]SetLayer(block02', 7)[br]SetLayer(block03', 7)[br][/code]

Information