BandWeaver: Transformando polilinhas em faixas entrelaçadas

por Ed Pegg
BandWeaver é uma função de recurso que retorna faixas poligonais com o dobro de uma determinada meia largura, permitindo um entrelaçamento do tipo sobre/baixo (over/under) em polilinhas com auto-interseção. Página de documentação da função: https://resources.wolframcloud.com/FunctionRepository/resources/BandWeaver/

Exemplos

Transformação de uma polilinha em faixas entrelaçadas:
In[]:=
polyline={{0,0},{6,0},{6,9},{3,9},{3,3},{9,3},{9,6},{0,6},{0,0}};​​bands=
[◼]
BandWeaver
[polyline,1]
Out[]=
Polygon
Number of points: 10
Embedding dimension: 2
,Polygon
Number of points: 10
Embedding dimension: 2
,Polygon
Number of points: 8
Embedding dimension: 2

Visualização da polilinha e das faixas poligonais geradas:
In[]:=
Row[Flatten[Join[{Graphics[{Line[polyline]}],Graphics[#]&/@bands[[1]]}]]]
Out[]=
Visualização da faixa completa entrelaçada:
In[]:=
Graphics[{EdgeForm[{Black,Thick}],Cyan,bands}]
Out[]=
Exibição dos movimentos de cavalo (como no xadrez):
In[]:=
knight={{0,0},{1,2},{2,0},{0,1},{2,2},{1,0},{0,2},{2,1},{0,0}};GraphicsEdgeForm[{Black,Thick}],Red,
[◼]
BandWeaver
[knight,.06]
Out[]=
A espessura possível da faixa é geralmente limitada:
In[]:=
polyline={{0,1},{2,0},{1,1},{3,2},{2,3},{1,2},{3,1},{1,0},{2,1},{0,2},{1,3},{2,2},{0,1}};GraphicsEdgeForm[{Black,Thick}],Green,
[◼]
BandWeaver
[polyline,.05]
Out[]=
Sem auto-interseção, utiliza-se a
ResourceFunction
(função de recurso), PerforatePolygons:
In[]:=
GraphicsEdgeForm[{Black,Thick}],Green,
[◼]
BandWeaver
[{{0,0},{0,1},{1,1},{1,0}},.1]
Out[]=
Uma única auto-interseção já é suficiente:
In[]:=
GraphicsEdgeForm[{Black,Thick}],Green,
[◼]
BandWeaver
[{{0,0},{0,1},{1,0},{1,1}},.1]
Out[]=
In[]:=
pts1=
;​​pts5=
;
In[]:=
bands=
[◼]
BandWeaver
[{pts1,pts5},.25];​​Graphics[{EdgeForm[{Black,Thick}],Green,bands[[1]],Red,bands[[2]]}]
Out[]=

Escopo

Os resultados de
BandWeaver
podem ser combinados com outros elementos gráficos:
In[]:=
polyline={{0,0},{2,1},{1,0},{0,1},{2,0},{1,1}};​​part=Partition[polyline,2,1,1];​​GraphicsEdgeForm[{Gray,Thin}],Yellow,
[◼]
BandWeaver
[polyline,.05],​​Blue,Table[Text[k,(3part[[k,1]]+2part[[k,2]])/5],{k,1,6}]
Out[]=

Aplicações 

Código para uma bola quicando:
Vamos criar um entrelaçamento celta:
E, agora, vamos entrelaçar múltiplas formas:
Mostre o passeio do cavalo:

Possíveis problemas

A espessura das faixas é limitada na maioria das vezes:
Uma única auto-interseção já permite o funcionamento:

Exemplos interessantes

Código para gerar polilinhas em forma de estrela:
Entrelaçamento de duas estrelas de 9 pontas:
Ainda usando o código de estrela, vamos criar faixas entrelaçadas com várias estrelas:
Entrelaçamentos mais elaborados com estrelas:

CITE ESTE NOTEBOOK

BandWeaver: turn polylines into woven bands​
by Ed Pegg​
Wolfram Community, STAFF PICKS, February 25, 2026
​https://community.wolfram.com/groups/-/m/t/3645058