Transforma um segmento, o par [start, end], num objeto linha.
Exemplo: [[0,0,0], [10,5,0]] -> { start: [0,0,0], end: [10,5,0] }
O segmento
A linha
Transforma cada segmento, um par [start, end], num objeto linha.
Exemplo: três segmentos -> três linhas, pela mesma ordem
Os segmentos
Uma linha por segmento
Constrói um objeto linha a partir de um ponto inicial e um ponto final.
Exemplo: início [0,0,0], fim [10,5,0] -> { start: [0,0,0], end: [10,5,0] }
Os pontos inicial e final
O objeto linha
Constrói um segmento, a forma de par de pontos de uma linha, a partir de um ponto inicial e um ponto final.
Exemplo: início [0,0,0], fim [10,5,0] -> [[0,0,0], [10,5,0]]
Os pontos inicial e final
O segmento como [start, end]
Une cada ponto ao seguinte com uma linha, de modo que uma lista de pontos se torna uma cadeia de linhas.
Exemplo: [[0,0,0], [5,0,0], [5,5,0]] -> duas linhas, [0,0,0] a [5,0,0] e [5,0,0] a [5,5,0]
Os pontos, por ordem
Uma linha por par de pontos vizinhos
Emparelha cada ponto inicial com o ponto final na mesma posição e une-os com uma linha.
Um par cujos dois pontos coincidem não cria linha e é omitido. Exemplo: inícios [[0,0,0], [5,0,0]] e fins [[0,5,0], [5,5,0]] -> duas linhas
Os pontos iniciais e os pontos finais, por ordem correspondente
Uma linha por par, saltando os pares de comprimento 0
Encontra o ponto a uma fração do caminho ao longo de uma linha: 0 dá o início, 1 o fim, 0.5 o meio.
Uma fração fora de 0 a 1 continua para lá das extremidades. Exemplo: { start: [0,0,0], end: [10,0,0] } a 0.5 -> [5,0,0]
A linha e a fração ao longo dela
O ponto na linha
Encontra o ponto onde duas linhas se cruzam.
Com checkSegmentsOnly ligado, o cruzamento tem de ficar dentro de ambos os segmentos; desligado, as linhas
estendem-se sem fim. Linhas paralelas, linhas que passam uma pela outra sem se encontrarem, e segmentos
que não se alcançam dão undefined. A tolerância diz quão perto conta como encontro.
Exemplo: [0,0,0] a [10,0,0] e [5,-5,0] a [5,5,0] -> [5,0,0]
As duas linhas, se deve ficar dentro dos segmentos, e a tolerância
O ponto de cruzamento, ou undefined quando não existe
Aplica uma matriz de transformação, ou uma lista delas por ordem, a ambas as extremidades de uma linha.
Exemplo: { start: [0,0,0], end: [10,0,0] } movida por [5,5,0] -> { start: [5,5,0], end: [15,5,0] }
A linha e a transformação
Uma nova linha com as extremidades transformadas
Aplica uma transformação diferente a cada linha: a primeira transformação à primeira linha, e assim por diante.
Exemplo: três linhas com três translações -> cada linha movida pela sua própria translação
As linhas e uma transformação por linha
As linhas transformadas, pela mesma ordem
Linhas retas entre dois pontos, guardadas como objetos simples da forma
{ start, end }, e a forma de segmento[start, end]da mesma coisa. Os métodos aqui constroem linhas, medem-nas e transformam-nas, convertem entre as duas formas, colocam pontos ao longo delas e descobrem onde duas linhas se cruzam. Os comprimentos estão em unidades do modelo.