@@ -17,6 +17,24 @@ variable "height" {
1717locals {
1818 dx = var. second [0 ] - var. first [0 ]
1919 dy = var. second [1 ] - var. first [1 ]
20+
21+ sorted = abs (local. dx ) < abs (local. dy ) ? [abs (local. dx ), abs (local. dy )] : [abs (local. dy ), abs (local. dx )]
22+ gcd0 = local. sorted [0 ] == 0 ? [0 , 1 ] : local. sorted
23+
24+ # Do as many iterations as necessary.
25+ gcd1 = local. gcd0 [0 ] == 0 ? local. gcd0 : [local . gcd0 [1 ] % local . gcd0 [0 ], local . gcd0 [0 ]]
26+ gcd2 = local. gcd1 [0 ] == 0 ? local. gcd1 : [local . gcd1 [1 ] % local . gcd1 [0 ], local . gcd1 [0 ]]
27+ gcd3 = local. gcd2 [0 ] == 0 ? local. gcd2 : [local . gcd2 [1 ] % local . gcd2 [0 ], local . gcd2 [0 ]]
28+ gcd4 = local. gcd3 [0 ] == 0 ? local. gcd3 : [local . gcd3 [1 ] % local . gcd3 [0 ], local . gcd3 [0 ]]
29+ gcd5 = local. gcd4 [0 ] == 0 ? local. gcd4 : [local . gcd4 [1 ] % local . gcd4 [0 ], local . gcd4 [0 ]]
30+ gcd6 = local. gcd5 [0 ] == 0 ? local. gcd5 : [local . gcd5 [1 ] % local . gcd5 [0 ], local . gcd5 [0 ]]
31+ gcd7 = local. gcd6 [0 ] == 0 ? local. gcd6 : [local . gcd6 [1 ] % local . gcd6 [0 ], local . gcd6 [0 ]]
32+ gcd8 = local. gcd7 [0 ] == 0 ? local. gcd7 : [local . gcd7 [1 ] % local . gcd7 [0 ], local . gcd7 [0 ]]
33+ gcd9 = local. gcd8 [0 ] == 0 ? local. gcd8 : [local . gcd8 [1 ] % local . gcd8 [0 ], local . gcd8 [0 ]]
34+ gcd10 = local. gcd9 [0 ] == 0 ? local. gcd9 : [local . gcd9 [1 ] % local . gcd9 [0 ], local . gcd9 [0 ]]
35+
36+ # 10 iterations should cover numbers up to 55, which is more than the width/height
37+ gcd = local. gcd10 [1 ]
2038}
2139
2240output "nodes1" {
@@ -28,7 +46,7 @@ output "nodes1" {
2846
2947output "nodes2" {
3048 value = concat (
31- [for i in range (max (var. width , var. height )) : [var . first [0 ] - i * local . dx , var . first [1 ] - i * local . dy ]],
32- [for i in range (max (var. width , var. height )) : [var . second [0 ] + i * local . dx , var . second [1 ] + i * local . dy ]]
49+ [for i in range (max (var. width , var. height )) : [var . first [0 ] - i * local . dx / local . gcd , var . first [1 ] - i * local . dy / local . gcd ]],
50+ [for i in range (max (var. width , var. height )) : [var . second [0 ] + i * local . dx / local . gcd , var . second [1 ] + i * local . dy / local . gcd ]]
3351 )
3452}
0 commit comments