Цветовая карта. Танцую с бубном (
От: Seffka  
Дата: 16.06.10 20:03
Оценка: :)
void mapper(double x1 ,double x2, double y1,double y2,double scr1,double scr2)
{
  double color1=0;double t;
  double xc,yc,r,g,blue;
  yc=y1;
  r=1;
  g=0;
  blue=0;
  for (yc=y1;yc<=y2;yc=yc+(y2-y1)/scr2)
  {
    for (xc=x1;xc<=x2;xc=xc+(x2-x1)/scr1)
    {
      color1=function(xc,yc);
      color1=color1/coef;
      if ((color1 > 0 ) && (color1<0.2))
        {g=color1*5;}
      if ((color1 >= 0.2 ) && (color1<0.4))
        {r=2-5*color1;}
      if ((color1 >=0.6 ) && (color1<0.8))
        {g=4-color1*5;}
      if ((color1 >=0.8 ) && (color1<=1.0))
        {r=color1*5-4;}
      if ((color1>0.4) && (color1<0.6))
        {blue=color1*5-2;}
      glColor3f(r,g,r);

      glBegin(GL_POINTS);
      glVertex2f(xc*scr1/(x2-x1),yc*scr2/(y2-y1));
      glEnd();
    }
  }
}

добавил отбивку и раскраску, убрал icon_cool.gif :) — Кодт
вот эта процедурка выдает цветовую карту от function
при function=y выдается отличная радуга, при function=x выдается какая-то хрень, точнее какой-то странный спектр. Опытным путем я понял что косяк в синей компоненте, названной blue. Помогите, пожалуйста, найти косяк, а то я уже ниче не понимаю )
Re: Цветовая карта. Танцую с бубном (
От: Кодт Россия  
Дата: 17.06.10 08:47
Оценка:
Здравствуйте, Seffka, Вы писали:

S>
S>      color1=color1/coef;

S>      if ((color1 > 0 ) && (color1<0.2))
S>        {g=color1*5;}
S>      if ((color1 >= 0.2 ) && (color1<0.4))
S>        {r=2-5*color1;}
S>      if ((color1 >=0.6 ) && (color1<0.8))
S>        {g=4-color1*5;}
S>      if ((color1 >=0.8 ) && (color1<=1.0))
S>        {r=color1*5-4;}
S>      if ((color1>0.4) && (color1<0.6))
S>        {blue=color1*5-2;}

S>      glColor3f(r,g,r);
S>


Переводя на человечий язык: R,G,B как функции от значения color1
0.0  0.2  0.4  0.6  0.8  1.0

 ·    +    ·    ·    ·    +
 ·    |\   ·    ·    ·   /|
 ·    | \  ·    ·    ·  / |
 ·    |  \ ·    ·    · /  |
 ·    |   \·    ·    ·/   |
-+----+    +----+----+    +- r

 ·    +    ·    +    ·    ·
 ·   /|    ·    |\   ·    ·
 ·  / |    ·    | \  ·    ·
 · /  |    ·    |  \ ·    ·
 ·/   |    ·    |   \·    ·
-+    +---------+    +----+- g

 ·    ·    ·    +    ·    ·
 ·    ·    ·   /|    ·    ·
 ·    ·    ·  / |    ·    ·
 ·    ·    · /  |    ·    ·
 ·    ·    ·/   |    ·    ·
-+----+----+    +----+----+- blue

Вот такая внезапная радуга.
— так задумано
— так получилось

S>вот эта процедурка выдает цветовую карту от function

S>при function=y выдается отличная радуга, при function=x выдается какая-то хрень, точнее какой-то странный спектр. Опытным путем я понял что косяк в синей компоненте, названной blue. Помогите, пожалуйста, найти косяк, а то я уже ниче не понимаю )

Кривизна потенциально спряталась в загадочной переменной coef — банально, может быть неправильно установлена, из-за чего color1 не нормировался.
И откровенная кривизна — в вызове функции glColor3f(r,g,r) — без слов ясно.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.