# VEX Penrose tile

## Recommended Posts

Posted (edited)

Studying VEX i create penrose tile setup, maybe it will be interesting for someone who is beggining scripting in vex.

Edited by erbay
• 4

##### Share on other sites
1 minute ago, erbay said:

Studying VEX i create penrose tile setup, maybe it will be interesting for someone who is beggining scripting in vex.

• 1

##### Share on other sites
Posted (edited)

Here is simple version based on Python implementation.

```// Primitive wrangle.
// http://preshing.com/20110831/penrose-tiling-explained/

int pts[] = primpoints(0, @primnum);
vector a = point(0, "P", pts[0]);
vector b = point(0, "P", pts[1]);
vector c = point(0, "P", pts[2]);

float g = (1 + sqrt(5)) / 2;
vector p = a + (b - a) / g;
vector q = b + (a - b) / g;
vector r = b + (c - b) / g;

#define RED true
#define BLUE false
#define SAME @group_reversed
#define REVERSED !@group_reversed

void triangle(vector a, b, c; int red_or_blue, same_or_reversed)
{
setprimgroup(0, "red", prim, red_or_blue);
setprimgroup(0, "reversed", prim, same_or_reversed);
}

if (@group_red)
{
triangle(c, p, b, RED, SAME);
triangle(p, c, a, BLUE, SAME);
}
else
{
triangle(r, q, a, RED, REVERSED);
triangle(q, r, b, BLUE, REVERSED);
triangle(r, c, a, BLUE, SAME);
}

// Lengths of virtual edges to group for dissolve later.
setdetailattrib(0, "virtual_edge_long", distance(a, c));
setdetailattrib(0, "virtual_edge_short", distance(p, b));

removeprim(0, @primnum, true);```
Edited by f1480187
• 4