jblog
toc

Graph sim

2015-05-17, post № 29

programming, Pygame, Python, #bar, #bar graph, #bars, #color, #color change, #colors, #different colors, #generates, #generator, #graph, #pseudo random, #random, #WolframAlpha

Thinking of graphs — especially bar graphs — as a pretty piece of art I wanted to create something related. But due to me not having any data I could graph, I decided to just use randomly generated data. It has no real purpose rather than look good.

graph-sim-1.png
graph-sim-2.png
graph-sim-3.png

Some calculations

  • All of these calculations are based on random.randint() being perfectly random. Due to it being pseudo-random this will just be an approximation. To get further information, click on the equation to view them in Wolfram Alpha.
  • The chance of two adjacent bars having the same color:
  • \Big(\big(\frac{1}{256}\big)^3\Big)^{2-1}=5.96\cdot 10^{-8}=\text{basically }0
  • The chance of two adjacent bars having the same color and size, where
  • \text{max. size}=\text{window height}=720:
  • \Big(\big(\frac{1}{256}\big)^3\cdot\frac{1}{720}\Big)^{2-1}=8.28\cdot 10^{-11}=\text{basically }0
  • The chance of the screen not showing anything, which means every bar has the background color and
  • \text{max. quantity of bars on screen}=\frac{\text{window height}}{\text{bar width}}=\frac{720}{4}=180:
  • \Big(\big(\frac{1}{256}\big)^3\Big)^{180}=3.55\cdot 10^{-1301}=\text{basically }0.0
  • Although these probabilities are very unlikely, they — theoretically — could occur.
Source code: graph-sim.py

Shadow

2015-05-16, post № 28

programming, Pygame, Python, #-gon, #around, #around the center, #black, #change, #changing, #circle, #color, #color change, #colors, #controlled, #creating, #grid, #light, #lighting, #lightness, #polygon, #polygons, #random, #randomly assigned colors, #red, #saving, #shadow, #shadows, #tile, #tiles, #tiles.txt, #vector, #vector math, #vectors

Thinking about vectors and polygons a bit more, I came up with an idea to mimic shadows. In this program you can create colorful polygons with no limited quantity of individual points anywhere on the screen. Furthermore you then can move a light source (represented as a yellow circle) to change the polygon’s pitch black shadow.

shadow-1.png
shadow-5.png

The shadow can also be modified in that its distance to the polygon can be changed. To understand the shadow’s creation, there is also an option to visualize the path the light would — in reality — go.

shadow-2.png
shadow-7.png

Due to the shadow not changing in size (only in distance to its polygon) but rather in distance, I implemented the option to get a grid as the background. That way you more have the impression that the shadow is casted onto another surface beneath the surface containing all the polygons and not floating on the same surface.

shadow-3.png
shadow-4.png
shadow-10.png

To have a nice contrast from the polygons to their shadow, I decided to give every polygon a randomly assigned color by creation.

shadow-6.png

Lastly the program will save every polygon that has been drawn in a file called tiles.txt. It will be saved in the current working directory (in short cwd). If you create a new polygon or change the color of an existing one, it will automatically be saved.

Usage

  • Right-clicking moves the light source,
  • Left-clicking adds one new point (for polygon creation),
  • Left-clicking in flowdraw-mode adds points while holding the button,
  • Middle-clicking will connect the new points and create another polygon,
  • Scrolling (mouse wheel) changes the shadow-polygon distance,
  • Scrolling while holding ‘Space’ changes the distance ten times as rapid,
  • ‘l’ toggles if the path of the light is shown,
  • ‘b’ toggles if the background grid is shown,
  • ‘f’ toggles flowdraw-mode,
  • ‘r’ removes the polygon containing a point nearest to the mouse courser,
  • ‘c’ changes the polygon’s color containing a point nearest to the mouse courser,
  • ‘s’ lets you manually save your progress.
  • All the key bindings can be changed by linking — in the code posted below — main.keys.X to another pygame.K_X.
shadow-10.png

An example how tiles.txt can look (here for drawing ‘Jblog’ and some triangles): shadow_tiles.txt

Source code: shadow.py

Shaper

2015-05-10, post № 27

programming, Pygame, Python, #black, #change, #changing, #monochrome, #monochrome polygon, #mouse, #movement, #moving, #polygon, #pseudo random, #random, #red, #shapes, #shaping

Playing around with randomness I came up with this program which randomly generates various shapes. It starts off with one point in the center which will start randomly moving. By clicking on the screen you can generate new points or remove previous ones. If the number of points gets higher than 𝟤, a monochrome polygon will be displayed (using the pygame.polygon() function).

Usage

  • Left-clicking generates a new point,
  • Right-clicking removes a previous point.
shaper-2.png
shaper-3.png
shaper-4.png
Source code: shaper.py
Extra assets: shaper-1.png
Jonathan Frech's blog; built 2021/04/16 20:21:20 CEST