X–Y–Z

December, 2024

Custom software, Javascript, WebGL
Variable dimensions, silent
Edition of 1000

Commissioned by Flamingo DAO
With the support of Tribute Labs

Links
Flutter

Marketplaces
OpenSea

X–Y–Z Embed Tool

Generate an URL to the standalone version of X–Y–Z with optional display parameters.
The stroke weight and appearance can be adjusted; the number of planes (depth) of the scene can be increased but will require more GPU/CPU intensive rendering.

1.2
0.78
2

The project

X–Y–Z embeds the glyphs obtained from the ROM and displays them through a custom 3D stroke-geometry renderer. An infinite, ever-evolving sequence of planes, defined by simple geometric shapes, flows towards the viewport. Letters and numbers appear within and around these planes, forming new structures and geometries that continuously change over time. Meaning is conveyed not through words or text, but through movement and form.

keys url parameters (default values)
 i  toggle info
 f  fullscreen
 w  toggle wireframe
 o  toggle ortho
↓↑  stroke width
←→  fov
 p  export PNG
 c  hide cursor
 h  halt/resume
fps              ( 60)
strokeResolution (  6)
strokeMode       (  0)
strokeWeight     (1.2)
numPlanes        (  3)
maxSegments      (  0)
cols             (128)
rows             ( 64)
scale            (  2)
fov              (0.8)

Line font

X–Y–Z is a study of the built-in typeface found in vintage scientific vector displays from HP.
This “font” resides in the ROM (internal memory) of models like the HP1345 and HP1349 XY displays.
It is a “single line” design with a very low vertex and segment count (no curves), optimized for efficient rendering on these displays.
Due to technical limitations and minimal memory, the typeface has some quirks.
All glyphs are designed to fit within an 18×24 grid.
The HP1349 display dates back to 1984.

These displays cannot connect to a standard video signal/port. Instead, they feature a 26-pin digital interface for sending data to the “vector processor.” Through this interface, geometric coordinates can be sent and displayed as monochrome segments in real time. The protocol also allows for straightforward text rendering using the internal font.
Several years ago, a ROM dump of the firmware was found by the artist in the public domain, allowing for the extraction of the coordinates for all supported glyphs.
For example, the coordinate pairs to trace the digit “7” are: 0, 18, 12, 18, 4, 0.

BOX_WIDTH    : 18,
BOX_HEIGHT   : 22,
LINE_HEIGHT  : 24,
FONT_DATA    : {
	'↑'  : [[0,10,6,18,12,10], [6,18,6,0]],
	'←'  : [[6,3,0,9,6,15], [0,9,12,9]],
	'↓'  : [[0,8,6,0,12,8], [6,0,6,18]],
	'→'  : [[6,3,12,9,6,15], [0,9,12,9]],
	'π'  : [[3,0,4,12], [9,0,9,12], [0,10,4,12,9,12,12,14]],
	'°'  : [[6,16,4,18,4,21,6,23,9,23,11,21,11,18,9,16,6,16]],
	'Ω'  : [[0,0,4,0,1,7,1,12,4,16,9,16,12,12,12,7,9,0,13,0]],
	'φ'  : [[0,-7,3,9,7,12,11,11,13,8,13,4,10,0,5,0,2,3]],
	'Γ'  : [[0,0,4,0], [2,0,2,18], [0,18,12,18,12,14]],
	'Θ'  : [[7,0,2,0,0,4,0,10,2,15,5,18,10,18,12,14,12,8,10,3,7,0], [0,9,12,9]],
	'λ'  : [[0,0,6,10], [0,17,3,18,9,2,12,0]],
	'!'  : [[6,5,6,18], [6,0]],
	'"'  : [[3,14,4,18], [7,14,8,18]],
	'#'  : [[2,0,4,18], [8,0,10,18], [0,13,12,13], [0,5,12,5]],
	'$'  : [[0,3,3,1,9,1,12,3,12,7,9,9,3,9,0,11,0,15,3,17,9,17,12,15], [6,19,6,-1]],
	'%'  : [[0,0,12,18], [6,14,3,10,0,14,3,18,6,14], [9,8,12,4,9,0,6,4,9,8]],
	'&'  : [[12,5,8,0,2,0,0,4,9,14,7,18,3,18,1,14,12,0]],
	'('  : [[12,-2,6,4,6,14,12,20]],
	')'  : [[0,-2,6,4,6,14,0,20]],
	'*'  : [[3,2,9,16], [3,16,9,2], [0,9,12,9]],
	'+'  : [[6,2,6,16], [0,9,12,9]],
	','  : [[4,-4,6,1,6,1]],
	'-'  : [[0,9,12,9]],
	'.'  : [[6,0]],
	'/'  : [[0,0,12,18]],
	'0'  : [[1,2,11,16], [12,12,12,6,9,0,3,0,0,6,0,12,3,18,9,18,12,12]],
	'1'  : [[3,0,9,0], [6,0,6,18,3,15]],
	'2'  : [[0,15,3,18,9,18,12,15,12,11,2,5,0,0,12,0]],
	'3'  : [[0,16,3,18,9,18,12,15,12,11,9,9,3,9], [9,9,12,7,12,3,9,0,3,0,0,2]],
	'4'  : [[9,0,9,18,0,6,12,6]],
	'5'  : [[0,2,3,0,9,0,12,2,12,8,9,10,3,10,0,9,2,18,12,18]],
	'6'  : [[0,7,3,10,9,10,12,7,12,3,9,0,3,0,0,3,0,10,3,15,7,18]],
	'7'  : [[0,18,12,18,4,0]],
	'8'  : [[3,10,0,13,0,16,3,19,9,19,12,16,12,13,9,10,3,10,0,7,0,3,3,0,9,0,12,3,12,7,9,10]],
	'9'  : [[5,0,9,3,12,8,12,15,9,18,3,18,0,15,0,11,3,8,9,8,12,11]],
					

War Games

These displays were famously used for special effects in the Hollywood movie “War Games.” In the film’s military control center, all the screens displayed animated vector graphics. These graphics were produced using the HP X-Y vector displays, then colorized, combined, and projected on the screen.

Custom driver

A custom driver is in production: it will allow to send data to the display’s vector-processor.

Technical details:

  • MCU: 600 MHz ARM Cortex-M7
  • Output: +15V / -15V, +5V
  • Input: 24-32V
  • Data: Serial over USB-C
  • Protocol: HP API over 26 IO PINs

Rendering tests

Thank you ❤︎

Malte
Head of Artist Relations
TL
@maltefr_eth
Khalil
Engineering (hardware)
@alphonsemucha_
epikur
Engineering
TL
thatguy
Engineering
TL
Aaron
Founder
TL
@awrigh01
Pri
Head of Ops
TL
@pridesai
Jason Liao
Product
TL
@jasonliao
Kirra
Marketing
TL
@v_kirra
ChrisF
FD
@ChrisF_0x
Jonas
FD
@jonaslamis
Shillr Team
Marketing
@shillrxyz
 
TL :
tributelabs.xyz
FD :
flamingodao.xyz