Um "morph" no jargão de cortadores de espuma significa que o fio segue um PERFIL 2D DIFERENTE na torre esquerda vs. na torre direita. O fio está reto, mas suas extremidades traçam caminhos independentes, varrendo uma **superfície regrada** que interpola suavemente entre as duas formas.
É assim que você corta uma asa cônica (NACA2412 raiz → NACA0009 ponta), um duto de transição (quadrado → redondo), ou uma coluna torcida (mesmo círculo, rotacionado 60° entre as extremidades).
Para formas em que o lado esquerdo e o direito são idênticos (um cilindro simples, uma elipse, uma asa reta), o gerador ainda produz um "morph" — apenas acontece de ser um degenerado. Isso mantém o pipeline uniforme: toda saída de IA passa pela mesma função `generateMorph()`, pela mesma matemática de escalonamento, pelo mesmo serializador de G-code. Você pode transformar um não-morph em um morph a qualquer momento ajustando o escalonamento + rotação da torre direita.
É assim que você corta uma asa cônica (NACA2412 raiz → NACA0009 ponta), um duto de transição (quadrado → redondo), ou uma coluna torcida (mesmo círculo, rotacionado 60° entre as extremidades).
Para formas em que o lado esquerdo e o direito são idênticos (um cilindro simples, uma elipse, uma asa reta), o gerador ainda produz um "morph" — apenas acontece de ser um degenerado. Isso mantém o pipeline uniforme: toda saída de IA passa pela mesma função `generateMorph()`, pela mesma matemática de escalonamento, pelo mesmo serializador de G-code. Você pode transformar um não-morph em um morph a qualquer momento ajustando o escalonamento + rotação da torre direita.