@@ -245,6 +245,13 @@ _tuiles_n = []
245245_vus_n = []
246246_vus_cx = []
247247_vus_cy = []
248+ _methode_active = 0
249+
250+
251+ déf _coord_vers_entier(valeur):
252+ si valeur != valeur:
253+ retour 0
254+ retour entier(arrondir(valeur * 100.0 ))
248255
249256
250257déf _tuiles_reinit() :
@@ -260,6 +267,56 @@ déf _tuiles_reinit():
260267 retour 0
261268
262269
270+ déf _hors_champ(min_x, max_x, min_y, max_y, larg, haut):
271+ si max_x < 0 ou max_y < 0 ou min_x > larg ou min_y > haut:
272+ retour 1
273+ retour 0
274+
275+
276+ déf _ajouter_tuile_4(x0, y0, x1, y1, x2, y2, x3, y3, larg, haut):
277+ soit min_x = min(min(x0, x1), min(x2, x3))
278+ soit max_x = max(max(x0, x1), max(x2, x3))
279+ soit min_y = min(min(y0, y1), min(y2, y3))
280+ soit max_y = max(max(y0, y1), max(y2, y3))
281+ si _hors_champ(min_x, max_x, min_y, max_y, larg, haut) == 1 :
282+ retour 0
283+ _tuiles_off.append(len(_tuiles_xs))
284+ _tuiles_n.append(4 )
285+ _tuiles_xs.append(_coord_vers_entier(x0))
286+ _tuiles_ys.append(_coord_vers_entier(y0))
287+ _tuiles_xs.append(_coord_vers_entier(x1))
288+ _tuiles_ys.append(_coord_vers_entier(y1))
289+ _tuiles_xs.append(_coord_vers_entier(x2))
290+ _tuiles_ys.append(_coord_vers_entier(y2))
291+ _tuiles_xs.append(_coord_vers_entier(x3))
292+ _tuiles_ys.append(_coord_vers_entier(y3))
293+ retour 1
294+
295+
296+ déf _ajouter_tuile_6(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, larg, haut):
297+ soit min_x = min(min(min(x0, x1), min(x2, x3)), min(x4, x5))
298+ soit max_x = max(max(max(x0, x1), max(x2, x3)), max(x4, x5))
299+ soit min_y = min(min(min(y0, y1), min(y2, y3)), min(y4, y5))
300+ soit max_y = max(max(max(y0, y1), max(y2, y3)), max(y4, y5))
301+ si _hors_champ(min_x, max_x, min_y, max_y, larg, haut) == 1 :
302+ retour 0
303+ _tuiles_off.append(len(_tuiles_xs))
304+ _tuiles_n.append(6 )
305+ _tuiles_xs.append(_coord_vers_entier(x0))
306+ _tuiles_ys.append(_coord_vers_entier(y0))
307+ _tuiles_xs.append(_coord_vers_entier(x1))
308+ _tuiles_ys.append(_coord_vers_entier(y1))
309+ _tuiles_xs.append(_coord_vers_entier(x2))
310+ _tuiles_ys.append(_coord_vers_entier(y2))
311+ _tuiles_xs.append(_coord_vers_entier(x3))
312+ _tuiles_ys.append(_coord_vers_entier(y3))
313+ _tuiles_xs.append(_coord_vers_entier(x4))
314+ _tuiles_ys.append(_coord_vers_entier(y4))
315+ _tuiles_xs.append(_coord_vers_entier(x5))
316+ _tuiles_ys.append(_coord_vers_entier(y5))
317+ retour 1
318+
319+
263320déf _ajouter_poly(xs, ys, larg, haut):
264321 global _tuiles_xs, _tuiles_ys, _tuiles_off, _tuiles_n
265322 global _vus_n, _vus_cx, _vus_cy
@@ -290,19 +347,13 @@ déf _ajouter_poly(xs, ys, larg, haut):
290347 cy = sy / n
291348 si cx != cx ou cy != cy:
292349 retour 0
293- cx = entier(cx * 100.0 ) / 100.0
294- cy = entier(cy * 100.0 ) / 100.0
295- pour k dans range(len(_vus_n)):
296- si _vus_n[k] == n et _vus_cx[k] == cx et _vus_cy[k] == cy:
297- retour 0
298- _vus_n.append(n)
299- _vus_cx.append(cx)
300- _vus_cy.append(cy)
350+ soit cx_q = _coord_vers_entier(cx)
351+ soit cy_q = _coord_vers_entier(cy)
301352 _tuiles_off.append(len(_tuiles_xs))
302353 _tuiles_n.append(n)
303354 pour i dans range(n):
304- _tuiles_xs.append(xs[i])
305- _tuiles_ys.append(ys[i])
355+ _tuiles_xs.append(_coord_vers_entier( xs[i]) )
356+ _tuiles_ys.append(_coord_vers_entier( ys[i]) )
306357 retour 1
307358
308359
@@ -324,9 +375,19 @@ déf _gen_hex(larg, haut, a):
324375 decal = (rang % 2 ) * (hs / 2.0 )
325376 pour col dans range(cols):
326377 x = - hs + decal + col * hs
327- soit xs = [sommet_hex_x(x, y, a, i) pour i dans range(6 )]
328- soit ys = [sommet_hex_y(x, y, a, i) pour i dans range(6 )]
329- _ajouter_poly(xs, ys, larg, haut)
378+ soit x0 = sommet_hex_x(x, y, a, 0 )
379+ soit y0 = sommet_hex_y(x, y, a, 0 )
380+ soit x1 = sommet_hex_x(x, y, a, 1 )
381+ soit y1 = sommet_hex_y(x, y, a, 1 )
382+ soit x2 = sommet_hex_x(x, y, a, 2 )
383+ soit y2 = sommet_hex_y(x, y, a, 2 )
384+ soit x3 = sommet_hex_x(x, y, a, 3 )
385+ soit y3 = sommet_hex_y(x, y, a, 3 )
386+ soit x4 = sommet_hex_x(x, y, a, 4 )
387+ soit y4 = sommet_hex_y(x, y, a, 4 )
388+ soit x5 = sommet_hex_x(x, y, a, 5 )
389+ soit y5 = sommet_hex_y(x, y, a, 5 )
390+ _ajouter_tuile_6(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, larg, haut)
330391 retour 0
331392
332393
@@ -339,9 +400,7 @@ déf _gen_carre(larg, haut, a):
339400 y = rang * a
340401 x2 = min(larg, x + a)
341402 y2 = min(haut, y + a)
342- soit xs = [x, x2, x2, x]
343- soit ys = [y, y, y2, y2]
344- _ajouter_poly(xs, ys, larg, haut)
403+ _ajouter_tuile_4(x, y, x2, y, x2, y2, x, y2, larg, haut)
345404 retour 0
346405
347406
@@ -593,12 +652,14 @@ déf _gen_hex_tronque(larg, haut, a):
593652# ── Dispatch et acces aux tuiles ──────────────────────────────
594653
595654déf generer_tuiles(larg, haut, a, methode):
655+ global _methode_active
596656 _tuiles_reinit()
597657 si larg != larg ou haut != haut ou a != a ou methode != methode:
598658 retour 0
599659 si a < = 0 :
600660 retour 0
601661 m = entier(methode)
662+ _methode_active = m
602663 si m == 0 :
603664 _gen_hex(larg, haut, a)
604665 si m == 1 :
@@ -625,18 +686,24 @@ déf generer_tuiles(larg, haut, a, methode):
625686
626687
627688déf tuile_n_sommets(i):
628- global _tuiles_n
689+ global _tuiles_n, _methode_active
690+ si _methode_active == 0 :
691+ retour 6
692+ si _methode_active == 1 :
693+ retour 4
694+ si _methode_active == 2 :
695+ retour 3
629696 retour _tuiles_n[entier(i)]
630697
631698
632699déf tuile_sommet_x(i, j):
633700 global _tuiles_xs, _tuiles_off
634- retour _tuiles_xs[entier(_tuiles_off[entier(i)]) + entier(j)]
701+ retour _tuiles_xs[entier(_tuiles_off[entier(i)]) + entier(j)] / 100.0
635702
636703
637704déf tuile_sommet_y(i, j):
638705 global _tuiles_ys, _tuiles_off
639- retour _tuiles_ys[entier(_tuiles_off[entier(i)]) + entier(j)]
706+ retour _tuiles_ys[entier(_tuiles_off[entier(i)]) + entier(j)] / 100.0
640707
641708
642709# ── Codes de methode ──────────────────────────────────────────
0 commit comments