Colorir linhas em função de coordenadas

Sep 08 2020

Quero colorir as linhas em função das coordenadas em 3D. Aqui está meu código. Neste gráfico usei uma cor. Meu objetivo é usar uma função de cor baseada em coordenadas 3D.

points = RandomReal[{0, 20}, {100, 3}]
graph = Graphics3D[{Hue[0.67, 0.6, 0.6], Line[points]}, 
  PlotRange -> All, BoxRatios -> {1, 1, 1}, ImageSize -> 300]

Respostas

1 kglr Sep 08 2020 at 04:03

Você pode usar VertexColorspara colorir um segmento de linha misturando as duas cores associadas aos dois vértices:

SeedRandom[1]
points = RandomReal[{0, 20}, {100, 3}];

Graphics3D[{Thick, Line[points, VertexColors -> (Hue @@@ Rescale[points])]}, 
 PlotRange -> All, BoxRatios -> {1, 1, 1}, ImageSize -> 300]

Como alternativa, você pode usar BSplineFunction+ ParametricPlot3Dcom uma função de cor que depende dos três primeiros argumentos:

ParametricPlot3D[BSplineFunction[points, SplineDegree -> 1][t], {t, 0, 1}, 
 ColorFunction -> (Hue[#, #2, #3] &), BoxRatios -> {1, 1, 1}, 
 ImageSize -> 300]