mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 06:27:17 +00:00
new tessellation samples
This commit is contained in:
parent
c05aa5d57a
commit
66b2b3277a
1
tessellations/README.txt
Normal file
1
tessellations/README.txt
Normal file
@ -0,0 +1 @@
|
||||
go to https://github.com/zenorogue/tes-catalog for more!
|
7
tessellations/affine/affine-fathauer-1-1-1.tes
Normal file
7
tessellations/affine/affine-fathauer-1-1-1.tes
Normal file
@ -0,0 +1,7 @@
|
||||
## Fathauer triangle spiral, family 1, m=1, n=3
|
||||
a2.
|
||||
angleunit(deg)
|
||||
let(fi = (1+sqrt(5))/2)
|
||||
let(one = test(1/fi + 1/fi^2))
|
||||
tile(1,36,fi,36,1/fi,180,1/fi^2,108)
|
||||
conway("(0 2)(1 3)")
|
7
tessellations/affine/affine-square.tes
Normal file
7
tessellations/affine/affine-square.tes
Normal file
@ -0,0 +1,7 @@
|
||||
## square grid with affine transformations
|
||||
a2.
|
||||
angleunit(deg)
|
||||
tile(1,90,1,90,1,90,1,90)
|
||||
conway("[0 2](1 3)")
|
||||
# in the direction '0-2', stretch them by 1% and shear them by 50% (note that the direction is mirrored)
|
||||
stretch_shear(1.5, 0.5, 0, 0)
|
7
tessellations/affine/golden-spiral.tes
Normal file
7
tessellations/affine/golden-spiral.tes
Normal file
@ -0,0 +1,7 @@
|
||||
## Golden Spiral as an affine tessellation
|
||||
a2.
|
||||
angleunit(deg)
|
||||
let(fi = (1+sqrt(5))/2)
|
||||
let(one = test(1/fi + 1/fi^3 + 1/fi^4))
|
||||
tile(1,90,1,90,1,90,1/fi,180,1/fi^4,180,1/fi^3,90)
|
||||
conway("(0 3)(1 4)(2 5)")
|
12
tessellations/sample/brickwork.tes
Normal file
12
tessellations/sample/brickwork.tes
Normal file
@ -0,0 +1,12 @@
|
||||
## brickwork
|
||||
## a simple test
|
||||
e2.
|
||||
angleunit(deg)
|
||||
# 1's are edge lengths, and 0s and 90s are external angles, given in angleunits (i.e. degrees)
|
||||
tile(1,180,1,90,1,90,1,180,1,90,1,90)
|
||||
# consecutive edges in 'tile' description are numbered: 0, 1, 2, 3, 4, 5
|
||||
# consecutive tile types are numbered: 0, 1, 2, ... (here there is just one type)
|
||||
# the last 0 means that there is no mirroring
|
||||
c(0,0,0,3,0)
|
||||
c(0,1,0,4,0)
|
||||
c(0,2,0,5,0)
|
54
tessellations/sample/circlelimit3.tes
Normal file
54
tessellations/sample/circlelimit3.tes
Normal file
@ -0,0 +1,54 @@
|
||||
## Escher's Circle Limit III
|
||||
## Instructions:
|
||||
## load this;
|
||||
## load Escher's Circle Limit III in the texture mode;
|
||||
## "scale/rotate the texture" until centers of octagons coincide with center of Escher's squares;
|
||||
## you may "select master triangles" and pick triangles closer to the center;
|
||||
## enable the texture
|
||||
|
||||
h2.
|
||||
angleunit(2*pi/3)
|
||||
distunit(edge(8,3))
|
||||
|
||||
unittile(1,1,1,1,1,1,1,1) # YG
|
||||
unittile(1,1,1,1,1,1,1,1) # YB
|
||||
unittile(1,1,1,1,1,1,1,1) # YR
|
||||
unittile(1,1,1,1,1,1,1,1) # RG
|
||||
unittile(1,1,1,1,1,1,1,1) # RB
|
||||
unittile(1,1,1,1,1,1,1,1) # GB
|
||||
|
||||
c(0,0,3,1,0)
|
||||
c(0,1,5,2,0)
|
||||
c(0,2,1,3,0)
|
||||
c(0,3,2,2,0)
|
||||
c(1,0,5,1,0)
|
||||
c(1,1,4,0,0)
|
||||
c(1,2,2,3,0)
|
||||
c(2,0,4,3,0)
|
||||
c(2,1,3,2,0)
|
||||
c(3,0,5,3,0)
|
||||
c(3,3,4,2,0)
|
||||
c(4,1,5,0,0)
|
||||
|
||||
c(0,4,3,5,0)
|
||||
c(0,5,5,6,0)
|
||||
c(0,6,1,7,0)
|
||||
c(0,7,2,6,0)
|
||||
c(1,4,5,5,0)
|
||||
c(1,5,4,4,0)
|
||||
c(1,6,2,7,0)
|
||||
c(2,4,4,7,0)
|
||||
c(2,5,3,6,0)
|
||||
c(3,4,5,7,0)
|
||||
c(3,7,4,6,0)
|
||||
c(4,5,5,4,0)
|
||||
|
||||
# these lines repeat connections from (0123) to (4567), and also tell the texture mode that four triangles should be repeated twice
|
||||
# (put them after specifying connections); however, it works better without them
|
||||
|
||||
# repeat(0, 2)
|
||||
# repeat(1, 2)
|
||||
# repeat(2, 2)
|
||||
# repeat(3, 2)
|
||||
# repeat(4, 2)
|
||||
# repeat(5, 2)
|
62
tessellations/sample/circlelimit3b.tes
Normal file
62
tessellations/sample/circlelimit3b.tes
Normal file
@ -0,0 +1,62 @@
|
||||
## Escher's Circle Limit III, mapped to {12,3}
|
||||
## After mapping circlelimit3.tes, change the tes file to this one
|
||||
|
||||
h2.
|
||||
angleunit(2*pi/3)
|
||||
distunit(edge(12,3))
|
||||
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # YG
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # YB
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # YR
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # RG
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # RB
|
||||
unittile(1,1,1,1,1,1,1,1,1,1,1,1) # GB
|
||||
|
||||
c(0,0,3,1,0)
|
||||
c(0,1,5,2,0)
|
||||
c(0,2,1,3,0)
|
||||
c(0,3,2,2,0)
|
||||
c(1,0,5,1,0)
|
||||
c(1,1,4,0,0)
|
||||
c(1,2,2,3,0)
|
||||
c(2,0,4,3,0)
|
||||
c(2,1,3,2,0)
|
||||
c(3,0,5,3,0)
|
||||
c(3,3,4,2,0)
|
||||
c(4,1,5,0,0)
|
||||
|
||||
c(0,4,3,5,0)
|
||||
c(0,5,5,6,0)
|
||||
c(0,6,1,7,0)
|
||||
c(0,7,2,6,0)
|
||||
c(1,4,5,5,0)
|
||||
c(1,5,4,4,0)
|
||||
c(1,6,2,7,0)
|
||||
c(2,4,4,7,0)
|
||||
c(2,5,3,6,0)
|
||||
c(3,4,5,7,0)
|
||||
c(3,7,4,6,0)
|
||||
c(4,5,5,4,0)
|
||||
|
||||
c(0,8,3,9,0)
|
||||
c(0,9,5,10,0)
|
||||
c(0,10,1,11,0)
|
||||
c(0,11,2,10,0)
|
||||
c(1,8,5,9,0)
|
||||
c(1,9,4,8,0)
|
||||
c(1,10,2,11,0)
|
||||
c(2,8,4,11,0)
|
||||
c(2,9,3,10,0)
|
||||
c(3,8,5,11,0)
|
||||
c(3,11,4,10,0)
|
||||
c(4,9,5,8,0)
|
||||
|
||||
# these lines repeat connections from (0123) to (4567), and also tell the texture mode that four triangles should be repeated twice
|
||||
# (put them after specifying connections); however, it works better without them
|
||||
|
||||
# repeat(0, 2)
|
||||
# repeat(1, 2)
|
||||
# repeat(2, 2)
|
||||
# repeat(3, 2)
|
||||
# repeat(4, 2)
|
||||
# repeat(5, 2)
|
28
tessellations/sample/circlelimit3c.tes
Normal file
28
tessellations/sample/circlelimit3c.tes
Normal file
@ -0,0 +1,28 @@
|
||||
## Escher's Circle Limit III, mapped to sphere
|
||||
## After mapping circlelimit3.tes, change the tes file to this one
|
||||
|
||||
s2.
|
||||
angleunit(2*pi/3)
|
||||
distunit(1)
|
||||
distunit(edge(4,3))
|
||||
|
||||
unittile(1,1,1,1) # YG
|
||||
unittile(1,1,1,1) # YB
|
||||
unittile(1,1,1,1) # YR
|
||||
unittile(1,1,1,1) # RG
|
||||
unittile(1,1,1,1) # RB
|
||||
unittile(1,1,1,1) # GB
|
||||
|
||||
c(0,0,3,1,0)
|
||||
c(0,1,5,2,0)
|
||||
c(0,2,1,3,0)
|
||||
c(0,3,2,2,0)
|
||||
c(1,0,5,1,0)
|
||||
c(1,1,4,0,0)
|
||||
c(1,2,2,3,0)
|
||||
c(2,0,4,3,0)
|
||||
c(2,1,3,2,0)
|
||||
c(3,0,5,3,0)
|
||||
c(3,3,4,2,0)
|
||||
c(4,1,5,0,0)
|
||||
|
9
tessellations/sample/floret.tes
Normal file
9
tessellations/sample/floret.tes
Normal file
@ -0,0 +1,9 @@
|
||||
## floret-like tiling
|
||||
## from Marek14's post in HyperRogue discord
|
||||
e2.
|
||||
angleunit(deg)
|
||||
tile(1,60,3,120,1,120,1,60,1,240,1,180,1,120)
|
||||
c(0,0,0,6,0)
|
||||
c(0,1,0,1,0)
|
||||
c(0,2,0,5,0)
|
||||
c(0,3,0,4,0)
|
8
tessellations/sample/hexiamond.tes
Normal file
8
tessellations/sample/hexiamond.tes
Normal file
@ -0,0 +1,8 @@
|
||||
## {3,7} hexiamond
|
||||
h2.
|
||||
angleunit(2*pi/7)
|
||||
distunit(edge(3,7))
|
||||
unittile(1,3,1,4,1,3,1,4)
|
||||
conway("(0 1)(2 3)(4 5)(6 7)")
|
||||
sublines(1)
|
||||
# warning: this one is "nonorientable"
|
26
tessellations/sample/hr-standard-tiling.tes
Normal file
26
tessellations/sample/hr-standard-tiling.tes
Normal file
@ -0,0 +1,26 @@
|
||||
## HyperRogue standard tiling
|
||||
h2.
|
||||
|
||||
# we compute the edge length of the Archimedean tessellation we are using
|
||||
distunit(arcmedge(6,6,7))
|
||||
# note: subsequent results of arcmedge are given in terms of distunit
|
||||
|
||||
# regangle(A,B) returns the internal angle of a B-gon with sidelength A
|
||||
|
||||
let(u6 = regangle(1, 6))
|
||||
let(u7 = regangle(1, 7))
|
||||
|
||||
unittile(u6,u6,u6,u6,u6,u6)
|
||||
unittile(u7,u7,u7,u7,u7,u7,u7)
|
||||
|
||||
c(0,0,0,0,0)
|
||||
c(0,2,0,2,0)
|
||||
c(0,4,0,4,0)
|
||||
c(0,1,1,0,0)
|
||||
c(0,3,1,1,0)
|
||||
c(0,5,1,2,0)
|
||||
c(0,1,1,3,0)
|
||||
c(0,3,1,4,0)
|
||||
c(0,5,1,5,0)
|
||||
c(0,1,1,6,0)
|
||||
|
11
tessellations/sample/marek313.tes
Normal file
11
tessellations/sample/marek313.tes
Normal file
@ -0,0 +1,11 @@
|
||||
## {3,13} pentiamond
|
||||
## from Marek14's post in HyperRogue discord
|
||||
h2.
|
||||
angleunit(2*pi/13)
|
||||
distunit(edge(3,13))
|
||||
tile(1,2,1,3,1,2,1,1,1,3,1,3,1,1)
|
||||
c(0,0,0,6,0)
|
||||
c(0,1,0,1,0)
|
||||
c(0,2,0,2,0)
|
||||
c(0,3,0,4,0)
|
||||
c(0,5,0,5,0)
|
28
tessellations/sample/marjorie-rice.tes
Normal file
28
tessellations/sample/marjorie-rice.tes
Normal file
@ -0,0 +1,28 @@
|
||||
## Marjorie Rice tiling
|
||||
## see: "Marjorie Rice and the MAA tiling", Doris Schattschneider
|
||||
e2.
|
||||
angleunit(deg)
|
||||
let(u=sqrt(3)/3)
|
||||
tile(1, 150, u, 120, u, 90, 1, 120, 1, 60)
|
||||
tile(1, 150, u, 120, u, 90, 1, 120, 1, 60)
|
||||
tile(1, 150, u, 120, u, 90, 1, 120, 1, 60)
|
||||
|
||||
#c(0,0,0,4,0)
|
||||
#c(0,3,2,3,0)
|
||||
#c(0,1,2,2,0)
|
||||
#c(0,2,1,1,0)
|
||||
#c(2,1,1,2,0)
|
||||
#c(1,0,2,4,0)
|
||||
#c(2,0,2,0,0)
|
||||
#c(1,3,1,4,0)
|
||||
|
||||
# in Conway notation, tile #k can be identified with k primes or with @k
|
||||
conway("(0 4)(3 3'')(1 2'')(2 1')(1'' 2')(0' 4'')(0'')(3' 4')")
|
||||
|
||||
# affect Vineyard/Zebra/Land of Power
|
||||
line(0)
|
||||
# heptagon role (affects e.g. Graveyard)
|
||||
grave(1)
|
||||
|
||||
# draw sublines in the grid, for every pair of vertices in distance of 1 distunit
|
||||
sublines(1)
|
20
tessellations/sample/sliders.tes
Normal file
20
tessellations/sample/sliders.tes
Normal file
@ -0,0 +1,20 @@
|
||||
## triangle alpha-beta-gamma, where alpha+beta+gamma = 120 degrees
|
||||
##
|
||||
## You can change alpha, beta, and gamma using 'tessellation sliders' in the geometry experiments menu.
|
||||
##
|
||||
h2.
|
||||
angleunit(deg)
|
||||
|
||||
slider(a,40,0,120)
|
||||
slider(b,40,0,120)
|
||||
|
||||
let(c = 120-a-b)
|
||||
|
||||
let(ea=edge_angles(a,b,c))
|
||||
let(eb=edge_angles(b,c,a))
|
||||
let(ec=edge_angles(c,a,b))
|
||||
|
||||
tile(ea, b, ec, a, eb, c)
|
||||
conway("(0)(1)(2)")
|
||||
|
||||
cscale(.75)
|
21
tessellations/sample/sliders2.tes
Normal file
21
tessellations/sample/sliders2.tes
Normal file
@ -0,0 +1,21 @@
|
||||
## triangle alpha-beta-gamma, where alpha+beta+gamma = 120 degrees
|
||||
##
|
||||
## You can change alpha, beta, and gamma using 'tessellation sliders' in the geometry experiments menu.
|
||||
##
|
||||
## You can choose all three angles. Sliders are not allowed to change the structure of the map,
|
||||
## so if they do not add up to 120 degrees, they will not match.
|
||||
##
|
||||
h2.
|
||||
angleunit(deg)
|
||||
|
||||
slider(a,40,0,120)
|
||||
slider(b,40,0,120)
|
||||
slider(c,40,0,120)
|
||||
|
||||
let(ea=edge_angles(a,b,c))
|
||||
let(eb=edge_angles(b,c,a))
|
||||
let(ec=edge_angles(c,a,b))
|
||||
|
||||
tile(ea, b, ec, a, eb, c)
|
||||
conway("(0)(1)(2)")
|
||||
|
22
tessellations/sample/star.tes
Normal file
22
tessellations/sample/star.tes
Normal file
@ -0,0 +1,22 @@
|
||||
## {4,6}, tromino 1S, solution 1
|
||||
s2.
|
||||
|
||||
# we compute the edge length
|
||||
#distunit(edge(5/2,3))
|
||||
#distunit(edge(5,5/2))
|
||||
distunit(edge(5/2,5))
|
||||
|
||||
# note: subsequent results of arcmedge are given in terms of distunit
|
||||
|
||||
# regangle(A,B) returns the internal angle of a B-gon with sidelength A
|
||||
|
||||
|
||||
#let(u5 = 2*pi/3)
|
||||
#let(u5 = 4*pi/5)
|
||||
let(u5 = 2*pi/5)
|
||||
|
||||
unittile(u5,u5,u5,u5,u5)
|
||||
|
||||
c(0,0,0,0,0)
|
||||
c(0,1,0,3,0)
|
||||
c(0,2,0,4,0)
|
12
tessellations/sample/twothree.tes
Normal file
12
tessellations/sample/twothree.tes
Normal file
@ -0,0 +1,12 @@
|
||||
## two-three tiling
|
||||
## from Marek14's post in HyperRogue discord
|
||||
e2.
|
||||
angleunit(deg)
|
||||
tile(1,90,2,90,1,90,2,90)
|
||||
tile(1,90,1,180,1,180,1,90,1,90,1,180,2,90)
|
||||
c(0,3,0,3,0)
|
||||
c(0,0,1,2,0)
|
||||
c(0,1,1,6,0)
|
||||
c(0,2,1,3,0)
|
||||
c(1,0,1,1,0)
|
||||
c(1,4,1,5,0)
|
Loading…
Reference in New Issue
Block a user