Onde – no contexto de visualização NDimensional – uma matriz simples (N+1)x(N+1) é
esperada – como no campo INST ntransform, ou a
ND-xform* (veja comandos GCL) – use um objeto ntransform.
   
ntransform são matrizes de transformação NLinhas x NColunas
onde usualmente NLinhas = N+1 no contexto de
objetos N-dimensionais e visualização. A componente homogênea de uma
ntransform situa-se na coluna zero (em oposição a objetos
transform comuns onde a componente homogênea situa-se na coluna
três). Objetos ntransform trabalham sobre pontos de qualquer dimensão: se
um ponto é para ser transformado através de um objeto ntransform e a
dimensão do ponto não coincide com o número de linhas do
objeto ntransform, então ou o ponto está implicitamente preenchido
com zeros para coincidir com  NLinhas ou a matriz está implicitamente preenchida com
unidades abaixo de sua diagonal principal (e zeros em todas as outras posições) de forma que a matriz irá
trabalhar como a matriz identidade sobre as dimensões excedentes do ponto de entrada.
   
A sintaxe para um objeto ntransform é
     <ntransform> ::=
       [ "{" ]             (abertura de chave, geralmente necessária para
                            tornar o fim do objeto claramente explicitado.)
     
        [ "ntransform" ]    (palavra chave opcional; desnecessária se o tipo
                            for determinado pelo contexto, o que
                            comumente ocorre.)
     
        [ "define" <nome> ]
                            (define uma transformação chamada <nome>,
                            escolhendo seus valores do material adiante)
     
          NLinhas NColunas
                            (número de linhas e colunas da matriz,
                            tipicamente N+1 N+1, mas qualquer dimensão
                            é possível)
          <NLinhas x NColunas números em ponto flutuante>
                            (interpretados como uma transformação homogênea
                            NLinhas x NColunas fornecida linha por linha,
                            pretensamente a ser aplicada a um vetor linha
                            multiplicado à ESQUERDA, de forma que e.g.
                            translações Euclideanas aparecem na linha mais
                            acima -- em oposição a objetos de
                            transformação comuns onde as
                            translações aparecem na linha mais inferior)
        |
           "<" <nomedearquivo>  (significando: leia a transformação daquele
                            arquivo)
        |
           ":" <nome>      (significando: use a variável <nome>,
                           definida em algum lugar; se não for definida o
                           valor inicial é a transformação identidade)
     
      [ "}" ]             (correspondente fechamento de chave)
   O conjunto deve ser delimitado entre { chaves }. Chaves não são necessariamente essenciais, de forma que e.g. dois inteiros – NLinhas NColunas – seguidos por um array composto de NLinhas x NColunas números em ponto flutuante independentes pode mas não precisa ter chaves.
Alguns exemplos, em contextos onde eles possivelmente podem ser usados:
# Exemplo 1: Um comando GCL para definir uma transformação6x6chamada # "fred", uma mera translação por meio do vetor-3 0 1 1 0. Essa # transformação é significativa para um espaço pentadimensional, com uma componente # homogênea um índice zero. (read ntransform { ntransform define fred 6 6 1 -3 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 } )
     # Exemplo 2: Escolhe o ND-xform de um objeto -- um geométrico ou um grupo de
     # cameras. Fornecendo a definição acima, o ND-xform escolhido coloca o objeto em (-3 0 1 1
     # 0) no espaço pentadimensional.
     
     (ND-xform-set focus : fred)
     
     # ou
     
     (ND-xform-set g1 : fred)