Manipulate
Expression dynamics: from a very trivial
Download original notebookManipulate[Column[{ Style[StringTemplate["`` m/s"][v], Blue], Table["🚗", {i, Floor[v/25]}]//Row }], {v,10,100}, ContinuousAction->True] // Quiet
(*GB[*){{(*VB[*)(EventObject[<|"Id" -> "dfa5c35b-702d-4579-ae6e-ade364cdbaa8", "Initial" -> {55.}, "View" -> "ff37ef23-8d09-45ff-a79d-7b906f781988"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKp6UZm6emGRnrWqQYWOqamKal6SaaW6bomidZGpilmVsYWlpYAACMOhWf"*)(*]VB*)}(*||*),(*||*){(*VB[*)(FrontEndRef["773937cb-e8de-47fa-9f2f-e5b37e457cf8"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKm5sbWxqbJyfpplqkpOqamKcl6lqmGaXpppomGZunmpiaJ6dZAACKlBYn"*)(*]VB*)}}(*]GB*)
To a quite complex symbolic computer algebra
Manipulate[Series[Sin[x], {x,0,n}], {n, 1, 10, 1}]
(*GB[*){{(*VB[*)(EventObject[<|"Id" -> "54b932ee-d103-416f-a3d3-8d9c1dd3e5bb", "Initial" -> {6}, "View" -> "d7649d96-7f87-41da-89a5-93021e5c9521"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKp5ibmVimWJrpmqdZmOuaGKYk6lpYJprqWhobGBmmmiZbmhoZAgB8XhT+"*)(*]VB*)}(*||*),(*||*){(*VB[*)(FrontEndRef["c0f97a41-ac4f-4628-8a86-97dc576f64a4"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKJxukWZonmhjqJiabpOmamBlZ6FokWpjpWpqnJJuam6WZmSSaAACFeRWJ"*)(*]VB*)}}(*]GB*)
Manipulate plots
An optimized version for drawing 2D data efficiently
ManipulatePlot[{ (*TB[*)Sum[(*|*)Sinc[w z n + p](*|*), {(*|*)n(*|*),(*|*)1(*|*),(*|*)10(*|*)}](*|*)(*1:eJxTTMoPSmNiYGAoZgMSwaW5TvkVmYwgPguQCCkqTQUAeAcHBQ==*)(*]TB*), (*TB[*)Sum[(*|*)Sin[w z n + p](*|*), {(*|*)n(*|*),(*|*)1(*|*),(*|*)10(*|*)}](*|*)(*1:eJxTTMoPSmNiYGAoZgMSwaW5TvkVmYwgPguQCCkqTQUAeAcHBQ==*)(*]TB*) }, {z,-Pi,Pi}, {w, 0, 5, 1}, {{p,0}, -Pi, Pi, 0.2}]
(*GB[*){{(*VB[*)(FrontEndRef["c7ea441b-bbef-458f-929d-17040561827b"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKJ5unJpqYGCbpJiWlpumamFqk6VoaWaboGpobmBiYmhlaGJknAQCNrRV3"*)(*]VB*)(*|*),(*|*)(*VB[*)(EventObject[<|"Id" -> "c26e4d5b-5614-4710-ae09-59a2bbdd9a5f", "Initial" -> {2, 0.}, "View" -> "4e0ba7f4-4c88-4f18-b4cb-743baefc082f"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKm6QaJCWap5nomiRbWOiapBla6CaZJCfpmpsYJyWmpiUbWBilAQCL/RY0"*)(*]VB*)}}(*]GB*)
Other examples
Manipulate 3D plot
Manipulate[ Plot3D[Sin[n x] Cos[n y], {x,-1,1}, {y,-1,1}] , {n, 1, 5, 1}]
(*GB[*){{(*VB[*)(EventObject[<|"Id" -> "fde7002f-b762-46d2-93fd-7fb361e2825a", "Initial" -> {3}, "View" -> "84f35cc5-896c-464e-b7e8-0591a85426a2"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKW5ikGZsmJ5vqWliaJeuamJmk6iaZp1roGphaGiZamJoYmSUaAQB/SxUn"*)(*]VB*)}(*||*),(*||*){(*VB[*)(FrontEndRef["0037056b-e3fe-4db1-acf8-f9331f0fcf8a"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKGxgYmxuYmiXpphqnpeqapCQZ6iYmp1noplkaGxumGaQB2YkAhJoWLg=="*)(*]VB*)}}(*]GB*)
Animation Widget
Animate[Factor[(*SpB[*)Power[⭐️(*|*),(*|*)n](*]SpB*)-1], {n,1,10, 1}, AnimationRate->5]
(*VB[*)(FrontEndRef["7bda1d8b-9340-4b04-868d-b1ccd51bf9b3"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKmyelJBqmWCTpWhqbGOiaJBmY6FqYWaToJhkmJ6eYGialWSYZAwCJIRX9"*)(*]VB*)
Advanced Technique
Using low-level building blocks, you can create complex widgets that react to mouse, keyboard, sliders, and more.
Gaussian Curve
Try to drag a red point
ClearAll[generate]; generate[{x_, y_}, k_] := Table[{t, y Exp[- (*FB[*)(((*SpB[*)Power[(x - t)(*|*),(*|*)2](*]SpB*))(*,*)/(*,*)(2 k))(*]FB*)]}, {t,-1,1, 0.03}]; udata = {{-1,0}, {1,0}}; Graphics[{ Cyan, Line[udata // Offload], Red, PointSize[0.05], EventHandler[Point[{0,0.5}], { "drag" -> ((udata = generate[#, 0.1])&) }] }, PlotRange->{{-1,1}, {0,1}}, ImagePadding->None, Axes->{True, False}, ImageSize->Small]
(*VB[*)(Graphics[{RGBColor[0, 1, 1], Line[Offload[udata]], RGBColor[1, 0, 0], PointSize[0.05], EventListener[Point[{0, 0.5}], {"drag" -> "2944ffbf-71bb-4a11-87be-12060f20c83e"}]}, PlotRange -> {{-1, 1}, {0, 1}}, ImagePadding -> None, Axes -> {True, False}, ImageSize -> Small])(*,*)(*"1:eJxtkF9KxDAQxrPqooIeQvC10Nbirk+Liq7CokvrBSabSQ1kE0laEW+iN/BW3kTzh+K27jx8fMnMfPyYE6pLPiKE2D0nd1oyPvavAydzAy/PYmXjj+8vhG34btcv51fXWmojnCdi1Mlf3EIojK99J4+cSw3M+rSWQQNbkkII6STuHjpZaqGaSryj+fzw9TXjO7537OTmFVXjyVChiSvjbiVOdegh1JBQ37NNTrsxWbYSK2+Ygbo6dSa/KArOKU8mGaVJAVmWTCcUkyxPz1Oep6vpGfb3I7TUTQmqxj7FgOnHVbzbf9bBf0g+cuZ+DTUugTGh6tB50GpI4M3lG9p+bDBPpsVwo1uQdht5yPfnDlPVGqT8Bc1vdgg="*)(*]VB*)
Mouse Follower
A basic widget that tracks and animates an array of lines to follow the mouse cursor:
getLines[xy_] := With[{dir = 0.05 Normalize[xy]}, (Table[W[{{i,j}, {i,j} + dir / ((*SpB[*)Power[Norm[{i,j}-xy](*|*),(*|*)2](*]SpB*) + 0.1)}], {i, -1,1,0.2}, {j, -1,1,0.2}] // Flatten) /. {W -> Identity} ]; Module[{lines = getLines[{0.01,0.01}]}, Graphics[{ White, EventHandler[ Rectangle[{-2,-2}, {2,2}], {"mousemove"->Function[xy, lines = getLines[xy]]} ], Black, Line[lines // Offload] }, "TransitionDuration"->270, "TransitionType"->"Linear", PlotRange->{{-1,1}, {-1,1}}] ]
(*VB[*)(Graphics[{GrayLevel[1], EventListener[Rectangle[{-2, -2}, {2, 2}], {"mousemove" -> "b90e611b-424f-4ae4-8ddc-27b1c194a9ea"}], GrayLevel[0], Line[Offload[lines$498810]]}, "TransitionDuration" -> 270, "TransitionType" -> "Linear", PlotRange -> {{-1, 1}, {-1, 1}}])(*,*)(*"1:eJxtUV1rwjAUrUPcBPVh/2Dga8FI2Nr3je1B2Gj9A2l7swViIkla8M+vy22mYvTl5N5zD/fj5KnSBR8lSWLHHj60bDgG9sHDu2H7H1HbwCBshHVBPQ31wwY6kAIpfof83MNbB8qhFBSYQKO8gNox9S0hUMd+4rfv+wEiHrMBzvsN80+qopVQYuedbi3sdAfl0mdVvoJnQqqUrilPKQOaZk1Tp+uXitQkpywHduuIJBqlIGT3Hj45l5o1duZj6St2SfMsI6tomUcfbA1TVjih1WtrGL5iMTrac1IuLpTbwx7Kyf9UZi61w5pfUrvCuxeZF1nWo5Xnz7jm/wC1bHhD"*)(*]VB*)