Homepage of Hermann Stamm-Wilbrandt

I&C
Information and Contact

planar_graph_playground

199x technical reports:

  1. A simple linear time algorithm for embedding maximal planar graphs
  2. Planar embedding of hamiltonian graphs via efficient bipartation of circle graphs
  3. Extended circle graphs I
Chapter 8 of (1) "Generation of random (maximal) planar graphs" repo:
https://github.com/Hermann-SW/randomgraph

I started planar_graph_playground repo
https://github.com/Hermann-SW/planar_graph_playground
in 4/2022, 28 years after I stopped similar project as University researcher.

This time as multi language library (JavaScript, Python and C++).

Related forum threads (100+, 25, 11 postings):
JavaScript graph library, for embedding and drawing planar graphs in 2D and/or sphere surface
C/C++(JavaScript) | planar graphs | draw fullerene in 2D/3D
Python(+JavaScript) graph library, for embedding and drawing planar graphs in 2D and/or sphere surface

C++ fastest, Python slowest, JavaScript allows for browser (2D graphics: SVG, 3D graphics: JSCAD):

Github repo contains first 30579 non-isomorphic fullerenes (C20..C70) and 1267 IPR (Independent Pentagon Region) fullerenes (I60..I100):

2D embedding demo online (SVG):
https://hermann-sw.github.io/planar_graph_playground/

2D PostScript output as well:
(planar graphs are 4colorable, there is a linear time 5coloring algorithm, and even simpler linear time six_coloring(G))

Planar graph embedding onto sphere is not that easy. Just mapping plane embedding onto sphere and then using spring embedder might unravel (left) all vertices into same place (right):

Work in progress algorithm node.tetra.js OpenSCAD output:

JSCAD output:

The repo provides spherical edge, half vertex and vertex text, and spherical polygon modules/functions to generate sphere embedding OpenSCAD/JSCAD output.

Provides "vertex()" and "edge()" OpenSCAD modules for drawing graph onto cube[oid] as well, here visualization of "cube[oid] shortest surface path problem" solution, details: https://forums.raspberrypi.com/viewtopic.php?p=2038730#p2038730 (orange/blue/yellow shortest paths pass through 3/4/5 faces, from single bottom face start point to top face target point)

cuboid_shortest_paths
Determine and visualize shortest paths between single point on bottom face and many points on top face of cuboid (in browser):
https://hermann-sw.github.io/cuboid_shortest_paths/
ezxdisp
yet another simple graphics library (C, from 2007, now on gitghub):
https://github.com/Hermann-SW/ezxdisp

3Dprinting
Stacked Ikea Lack tables host my Prusa MINI+ 3Dprinter with OctoPi holder:

I use borescope nozzle camera, can switch in OctoPrint between nozzle and scene view:

92cm high paper drinking straw C60 (football) fullerene, hanging 3m high, without any glue. With 3Dprinted connectors:
https://forum.prusa3d.com/forum/english-forum-awesome-prints-hall-of-fame/toothpick-polyhedra-fullerenes/

Blog
HermannSW on twitter,
  and Arduino and Raspberry forums
Hermann-SW on github (gists)
(priorartdatabase — patents)
[Record Breaking Optimization Results
Using the Ruin and Recreate Principle
]=>
<myBlog/>
myCE myAndroid myFrameless

Tools / Games
C/C++ scripts   /   (tcc) "-run" option for gcc and g++   (for Linux ELF, verified for x86_64 and armv7l)
ELF executable gets compiled into RAM, and executed from there — no auxiliary filesystem files!
<pbmtobraille/> (C)  <echo-e.to.braille.html> (web)
   ⠀⠀⣀⠀⣀⣀⠀⢹⣀⠀⡀⣀⢀⡀⢀⣄⡀⢀⡀⠈⣇⡀⢀⢀⡀⢀⡀⢀⡁⢹⠈⡇⠀⣀⠀⢀⠇⣀⠀⠀⠀⠀⢀⠎⢀⠞⠉⠺⠈⢆
   ⠒⠭⣀⠀⢸⠀⡇⢸⠀⡇⢸⠀⡇⢸⠀⡇⠀⡇⢸⠀⡇⢸⠀⡏⠀⡕⢺⠀⡇⢸⠀⡇⢸⡒⢃⡜⠀⣀⠭⠒⠀⠀⢸⠀⠘⣄⠀⣠⠀⢸
   ⠀⠀⠀⠀⣸⡉⠀⠈⠉⠀⠉⠁⠉⠈⠁⠈⠁⠈⠁⠀⠉⠁⠈⠉⠀⠈⠁⠉⠉⠉⠉⠉⠀⠉⠁⠁⠀⠀⠀⠀⠀⠀⠈⢆⠀⠈⠉⠁⢀⠎
<simple_client-side_bookmarklet_creator/>   (JavaScript)
<GraphvizFiddle/>   (online Graphviz editor&layout [based on Viz.js])
<uʍopǝpᴉsd∩/>   ("foobar" → "ɹɐqooɟ" [browser XQuery])
<n-queens.xsl.xml/>   (n-queens, 4 ≤ n ≤ 9 [browser XSLT])
<peg-solitaire/>   (1-player board game [browser XSLT])
It knows all solutions for 33/37/39 pegs English/French/3-3-2-2 boards.
You may choose "Cheat" link (based on 1+16+64=81GB data files on this website).
There are 2,990,375,067 good positions for French board that allow to end with single peg on target field (forum link).
Instructions on how to revert a move can be found just above that posting (animation):

XSL
XSL (Extensible Stylesheet Language), xsl-list (Open Forum on XSL), related articles and files

Neckarsteig
Hiking 9 stage Neckarsteig in 4 days

E3BM
Eberbach 3-Mountain Marathon

myRunning & myStreak
My running activities and last 575 day Running StreakRunning abroad
(see DUV at bottom for my Ultra marathons)

A day outside of Las Vegas:
3h run through Red Rock Canyon, 325 miles drive through Death Valley.

oeis.org (The On-Line Encyclopedia of Integer Sequences)
my submissions (ordered by "modified")

new binomial formula "C(a+b,c) = sum(k=0..a, …" and animation in A007318

Blue links in .svg work; "10-edge CCs" at bottom right uses GraphvizFiddle mentioned above for display.
Before that, submitted 4 interlaced bisections found manually.
A049651 A294262 A232970 A254627 A110679 A077259 oeis.org 6 interlaced bisections from one connected component of "oeis share bisection" graph all 40 10-edge CCs of "oeis share bisection" graph 2090 116 6 0 493 27 1 2091 117 7 1 2 28 494 11 189 3383 2 44 798 a(n) = 3*a(n-1) + 5*a(n-2) + a(n-3), with a(0) = a(1) = 1 and a(2) = 7, a linear recurrence which is a trisection of A005252. a(n) = (F(3*n+1) - 1)/2, where F=A000045 (the Fibonacci sequence) G.f.: (1-3*x)/(1-5*x+3*x^2+x^3). First member of Diophantine pair (m,k) that satisfies 5*(m^2 + m) = k^2 + k; a(n) = m. Indices of centered pentagonal numbers (A005891) that are also triangular numbers (A000217). a(n+3) = 3*a(n+2) + 5*a(n+1) + a(n), a(0) = 1, a(1) = 2, a(2) = 11. G A049651 A049651 A077259 A077259 A049651--A077259 A294262 A294262 A049651--A294262 A099919 A099919 A077259--A099919 A110679 A110679 A077259--A110679 A099919--A110679 A254627 A254627 A110679--A254627 A292278 A292278 A110679--A292278 A254627--A292278 A232970 A232970 A232970--A294262 A232970--A254627

Robotics
Raspberry camera / gstreamer / raspivid / raspiraw
Teaser video of a closing mouse trap; the whole closing is completed in 0.01s(!).
This is an animation from Raspberry v2 camera 640x75 video captured at 1007fps(!), played at 1fps.
When the mouse trap bar touches down, it hits the black piezo igniter, showing a spark in front:

Multiple exposures of 84.3m/s (303km/h) inflight airgun bullet (1012x760 frame scaled to 25%, github repo)

Nearly ultrasonic speed (340m/s) 3Dprinted pellet shot with airgun.
Captured 5 times inflight by five 10000lm flashes of 2µs(!) duration each:
https://forums.raspberrypi.com/viewtopic.php?p=1952629#p1956584

The front 10000lm led on side does not look too bright (each of its 100 led spots does light for 10µs in total).

180° M12 lens mounted reversed on Raspberry HQ camera as macro lens.
Results in microscope with 0.21µm/pixel(!), here pin point of lancet.
Measured length is 63.1px * 0.21µm/px = 13.251µm!
https://forums.raspberrypi.com/viewtopic.php?t=210605&start=100#p1686246

https://www.youtube.com/watch?v=s-SjTs8gBPA
"First microscope xyz journey over micrometer and lanzet"
x/y steps â 5µm, z steps â 7µm!

Me captured from 50m high, part of photo taken from Raspberry Pi0 with v1 camera, attached to cheap RC airplane:
https://forums.raspberrypi.com/viewtopic.php?t=190407#p1196344

Find more 2007 images & videos here (German language)
2-wheel balancing
2
0
0
7
2
0
2
1
runaway robot 1-wheel braked
2-wheel balancing (fast) line following robot (current, w/ camera and green laser point)

KISS (Keep It Simple, Stupid)
algorithms hardware principals
I used for robotics

https://github.com/Hermann-SW/4DoF_robot_arm
(video)
Wireless control Eachine E52 FPV drone
(via TCP replay [attack])

raspcatbot (Raspberry caterpillar robot) forum thread:
https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=267999

Slowmo of raspcatbot passing, 100× slower than real, only 1.14m/s here:

Bring your own light and monochrome global shutter camera / free running 1774rpm(!), 6.04m/s with 65mm wheel

On left 2.2" display, Raspberry Pi3A+ and L298N motor driver / with 330rpm motors steep uphill

front view video from 22.5km/h toy train …

… slightly faster than 5m/s (18km/h) raspcatbot target speed.
Just to get an idea of what autonomous line following at maximal speed will have to deal with.

1kg raspcatbot running (with steel wire rope) on 1.25m radius around screw in garage floor.
Speed 3.24m/s or 11.65km/h, kinetic energy 0.5*m*v² = 5.25 Joule, centripetal force m*v²/r = 8.4 kg*m/s²

2
0
1
5
73g "robot"
96g Arduino uno robot
High speed Arduino uno robot
2
0
1
7
Loosing big outrunner motor wheel with bullet at 60km/h can be dangerous for top mounted camera ;-)
https://forum.arduino.cc/t/motor-test-station-mts/319852/42
Arduecat (Arduino Due Caterpillar robot)
full stop back wheelies
• U-turn w/o speed (>2m/s) reduction
• just swap one motor's direction for some time
• slowed down by factor 90/25=3.6
90fps slowmo youtube video
• positions at start of (overshooted) U-turn, at 90°, 180° and finally before going straight again
Arduebot can do similar U-turn

ESP8266  esp8266/arduino

Standalone small outdoor #Wifi #access #point and #webserver based on #ESP8266-01 with #LiPo! [1] [2] [3] [4]

6g in total version

Wireless ESP01S Payload drop mechanism
addon for drone (14.4× slower than real)


single move mode   animation sct_map
Chess: construction tasks

DUV
I am a member of the German Ultramarathon Association (German-language) (my statistics)


For fun I registered as participant of South-German (Bavaria, Baden-Württemberg, Hesse and Saxony) 100km road race championship 1998 in Leipzig. There were 59 starters, 52 finishers, and I was 50th finisher (at age of 33). There were only 6 starters in male 30-34 age group, and only 3 of them were from South-Germany. One South-German starter did not finish -- therefore I got official silver medal from German Athletics Association(!), was "2nd best South-German 100km road race runner in age group 30-34 in 1998" … ;-)
[winner finished in 7:07h, I finished in 12:26h -- better than 8km/h on average]
UltRunR
Huge amount of information on Ultra-Marathons