2013-03-30 3 views
0

В основном я пытаюсь сделать визуализацию решения двумерного конечного элемента на сетке треугольных элементов. Поэтому я собираюсь треугольником по треугольнику и используя функцию fill3 для его построения. Сейчас я делаюПользовательская цветовая палитра для функции fill3 в MATLAB?

% K is the number of mesh elements 

for i=1:K 
    % x,y,z are 3x1 vectors of the x,y,and z coordinates of the triangle vertices respectively 
    fill3(x,y,z,gradient(z)) 
end 

Проблема с этим состоит в том, что для каждого отдельного треугольника, используя градиент (г) означает Colormap наименьшее значение г на текущий треугольник соответствует минимальному и максимальному значению г соответствует максимуму.

Что я хочу, так это то, что для цветовой схемы по всему треугольнику должна быть какая-то консистенция, как при использовании функции «серфинга». Есть идеи, как это сделать?

ответ

1

Вы можете нормализовать глобальное максимальное значение треугольников в линии fill3. Итак, для каждого треугольника вычислите градиент (z) и найдите оба значения max и min. собрать все эти значения, найдите глобальные значения max и min. Обозначим эти значения как gmax, gmin, тогда мы можем нормализовать весь набор данных в соответствии с этими значениями. Например

fill3(x,y,z, (gradient(z)-gmin)/(gmax-gmin)) 

это должно принимать все значения градиента и отображать их на интервал [0,1] для всех треугольников. Затем цветовые карты должны быть согласованы между треугольниками.

+0

Хм, я понимаю причины этого. Поэтому для каждого треугольника вычислите градиент (z) и найдите его макс. затем сравнить между всеми треугольниками, чтобы найти максимальное значение «локальных» максимумов? Я попытался реализовать это и получил некоторые странные результаты для colorscale – user1799323

+0

см. Мой отредактированный ответ – bla

Смежные вопросы