@@ -123,7 +123,6 @@ impl MetaTile {
123123 }
124124}
125125
126- // Initial metatile construction (H, T, P, F at level 0)
127126fn build_init_metatiles ( ) -> ( Rc < TileType > , Rc < TileType > , Rc < TileType > , Rc < TileType > ) {
128127 let hr3 = 3.0_f64 . sqrt ( ) / 2.0 ;
129128 let hat = hat_outline ( ) ;
@@ -171,6 +170,11 @@ fn build_init_metatiles() -> (Rc<TileType>, Rc<TileType>, Rc<TileType>, Rc<TileT
171170 Rc :: clone ( & f_rc) ,
172171 ) ;
173172
173+ h. recentre ( ) ;
174+ t. recentre ( ) ;
175+ p. recentre ( ) ;
176+ f. recentre ( ) ;
177+
174178 ( Rc :: new ( TileType :: Meta ( h) ) , Rc :: new ( TileType :: Meta ( t) ) , Rc :: new ( TileType :: Meta ( p) ) , Rc :: new ( TileType :: Meta ( f) ) )
175179}
176180
@@ -354,14 +358,11 @@ pub fn generate_hat_tiling(levels: u32, scale: f64, viewport_bounds: Option<[DVe
354358 let hat = hat_outline ( ) ;
355359 let mut vector = Vector :: default ( ) ;
356360
357- for ( xf, label) in & transforms {
358- let reflected = * label == TileLabel :: H1 ;
359- let vertices: Vec < DVec2 > = ( 0 ..HAT_VERTEX_COUNT )
360- . map ( |i| {
361- let pt = if reflected { DVec2 :: new ( hat[ i] . x , -hat[ i] . y ) } else { hat[ i] } ;
362- xf. transform_point2 ( pt) * scale
363- } )
364- . collect ( ) ;
361+ for ( xf, _) in & transforms {
362+ let mut vertices = [ DVec2 :: ZERO ; HAT_VERTEX_COUNT ] ;
363+ for i in 0 ..HAT_VERTEX_COUNT {
364+ vertices[ i] = xf. transform_point2 ( hat[ i] ) * scale;
365+ }
365366
366367 if let Some ( [ vp_min, vp_max] ) = viewport_bounds {
367368 let tile_min = vertices. iter ( ) . copied ( ) . reduce ( |a, b| a. min ( b) ) . unwrap_or_default ( ) ;
0 commit comments