Lux Absio Bervatum

Showing posts with label hexagon. Show all posts
Showing posts with label hexagon. Show all posts

Tuesday, August 5, 2025

The Tri-Cities translated into hexagons

Hex translator metapattern of the Tri-Cities. Composed of separate patterns for each of the Tri-Cities, arranged (flipped/rotated) to kind of fit together the way they are in real life.


Links to each city's pattern with stats (Flickr): Richland, Pasco, Kennewick

Sunday, August 3, 2025

Hex translator XIV - Pasco; Elio

The 2nd pattern on build 20250802, this time generated from the input "City of Pasco, Franklin County, Washington State". This reminds me of another change in the new build, which is that short strings (less than 200 characters) get repeated until they're over 200 characters. So the modified input is actually this string (48 characters) repeated five times (to 240 characters). I made this change because I noticed smaller patterns tended to be less visually interesting.

BTW, saw Elio on Friday and really loved it. Easily in my Pixar Top-Five. It seems like many of the recent Pixar movies haven't been super well received aside from Inside Out 2, but for me it's been some of their best stuff. I missed Lightyear and was kind of meh on Elemental, but I thought Turning RedLuca, and Soul (and Inside Out 2) were all amazing. Onward was great, but not amazing.

Saturday, August 2, 2025

New Hex Translator build

I've been reworking the Hex Translator since July 2024 and just today finally got it to a point where it can generate pattern instructions. The new build is 20250802, previous stable build was 20210227A. Major changes include:
  • No more fixed base-palette, now the input determines which palette is used and most of those palette options are themselves generated from the input.
  • The "speed" at which one palette color transitions to the next is now generated from a 12-value probability array unique to each entry in the palette.
  • Starting and ending cells are marked.
  • Regressions (resetting origin to the starting cell during pattern generation) can happen, and become increasing likely the longer it's been since the last one while the base likelihood decreases with each regression.
  • Symbols and "hollow/broken" qualities have been replaced by "vacuoles" and "gears." Generation is handled a little differently.
  • A bunch of "under the hood" stuff that makes it easier for me to build the pattern.
  • Other things I'm probably forgetting since this took a really long time.
Here's the first full pattern I generated with the new build. The input is translated lyrics from "Pepper Keibu" by Pink Lady.

Monday, March 10, 2025

FDR Update (s17e10), Mickey 17, HT2024 palettes

New Fantasy Drag Race update (now current through episode 10). Good thing this has been a bit of a test run—realized I'd completely forgotten a major part of the scoring (the points players get for members of their Top-4 remaining in the competition).


Saw Mickey 17 yesterday. Really enjoyed it. My Letterboxd review for anyone interested.

Been working on palette stuff for the next version of the Hex Translator. Finalized the 56-color "basic hues" palette a while back but never shared it here. This forms the backbone from which all the colors used in the patterns are derived. The basic hues each have 2-4 light variants and 0-4 dark variants based on formulas for minimum and maximum pigmentation (C+M+(Y/3)+(K*1.12) > 20 minimum, C+M+(Y/2)+(K*1.5) < 180 maximum). In the spreadsheet excerpt below you can see the effects of those formulas as red zeroes where a light or dark variant passed out of range for having too little or too much pigment. It's also why, for example, indigo (im500) in the BasicHues chart (right) only has light variants.

Sunday, August 18, 2024

New Shapes

New shapes for the next hex translator build: Gears, vacuoles, chiral start/north signs, end signs (halmos finality symbols).

Next on the docket: A large static CMYK palette.

Thursday, November 3, 2022

Ha3Mogom (a macrostructure made of Hex Translator strings)

Over a year ago I finished a "Hex Translator" project I was working on for a while. I didn't want to post it here until I'd gotten prints to all the contributors. And the last one took me a while, but now that's done and I can share it here! The final print is 30 inches wide and 20 inches tall.

Here's a copy-paste of the "overview" text from the piece:

Ha3Mogom Macrostructure (HTb20210227A)

The Hex Translator is a deterministic algorithm that transforms character strings into patterns of hexagons with various qualities. The version used here, Hex Translator build 20210227A, can output patterns with three types of hexagons (solid, hollow, broken), six icons, and 1,216 colors. Colors are generated from, and cycle through, a 16-color palette.

The large, multicolored object at right is a macrostructure composed of eight different string patterns produced by the Hex Translator. Its label (Ha3Mogom) comes from shorthand for each string's source (Hill, Austin, 3, MIT, Older, Get, Own, Meteorology). In total, the macrostructure represents 4,935 characters.

Low-ish res raster render (~150 dpi):


And here's a photo of one of the framed prints:


I find it weirdly satisfying to look at this clumpy spatter of hexagons knowing that it's expressing all the input strings. It's neat to see that information with new patterns revealed all at once through a different lens.

Tuesday, March 30, 2021

Turning strings into pattern instructions with the hex translator

I thought it would be interesting to try to explain, step by step, how my Hex Translator thing turns strings into instructions. Specifically, how the first direction (for the 2nd cell of the pattern) is determined.

First, a few definitions: UniCh is the unicode value of the current character in the string. UniCu is the sum of the unicode value of the current character and the unicode value of every character preceding it. UniMx is the sum of all unicode values for all characters. StrLen is the number of characters in the input string. Constants are various primes with special focus on 48,271 and 2^31-1 (the 8th Mersenne prime).

Green bracketed text shows values and calculations for the example string "Sassafras." starting from the first character "S" (UniCh=83).

Let DirA = (StrLen + 389) times UniMx. [(10+389)*981=391,419]
Let DirB = mod(DirA, 701). [391,419 mod 701=261]
Let DirC = 48,271 times UniCu. [48,271*83=4,006,493]
Let DirD = mod(DirC + DirB, 2^31-1). The sum of DirC and DirB is way less than the modulus, so the modulo operation doesn't really matter here. [(4,006,493+261)=4,006,754; 4,006,754 mod 2,147,483,647=4,006,493]

Now we advance to the 2nd character, "a" (UniCh=97 so UniCu=180).

Let DirE = 48,271 times DirD. [48,271*4,006,493=193,410,022,334]
Let DirF = DirE + UniCu. [193,410,022,334+180=193,410,022,514]
Let DirG = mod(DirF, 2^31-1). [193,410,022,334 mod 2,147,483,647=136,494,284]
Let DirH = (DirG divided by 2^31-1) rounded to 16 decimal places if number of decimal places is greater than 16. [136,494,284/2,147,483,647=0.0635601040271856]
Let DirI = the last 7 digits of DirH. [0.0635601040271856 (last 7 digits)→ 0271856]
Let DirJ = the first 6 digits of DirI + UniCh. [0271856 (first 6 digits)→ 027185; 027185+97=27282]
Let DirK = mod(DirJ - 1, 6) + 1. [27282-1=27281; 27281 mod 6=5; 5+1=6]

Now we look up DirK's value on this table to get the direction:


6 = NW (northwest).

Why is this process so convoluted? I wanted to make the output hard to predict and ensure that relationships between different properties weren't obvious. Over many iterations the system got more and more complex. It isn't elegant, but I'm satisfied with how it behaves. The patterns it produces are what matter.