Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
4 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 4
1

Не могу разобраться с цветом

05.11.2013, 11:47. Показов 587. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ранее никогда не сталкивался с графикой, поэтому прошу простить, что вопрос наверняка глупый.
Есть массив данных размерностью 2048*1200
где первый индекс - это азимут, второй - дальность. Значение каждого элемента массива это амплитуда сигнала.
Необходимо сделать так, чтобы чем меньше амплитуда тем было более прозрачной линии ( При максимальном значении (2048) непрозрачно).

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
procedure TRadarScope.DrawBuffer(id : integer; bufar: TMatrix);
var
i,j,k : integer;
dnagle, ddist, angle, dist : double;
alf : Single;
x,y : single;
p1, p2 : TGlPoint;
begin
dnagle := 360/2048;
ddist  := RLSDistance/1200;
glNewList(5, GL_COMPILE);
  if id = 2 then // bi buffer
    begin
    ...
    end
  else // si  или sn buffer
    begin
//    glEnable(GL_BLEND);
 
    glBegin(GL_LINES);
      for i := 0 to 2047 do       // по углам
        begin
          angle := i * dnagle;   //  по дальности
          for j := 0 to 1199 do
            begin
              k := bufar[i,j];
              if (k>10) then
               begin
                if (k > 2048) then
                  k := 2048;
                alf := 0;
                if ((k > 10) and (k < 50)) then
                  alf := (k-10)/40*25/255;
                if k >= 50 then
                  alf := ((k-50)/1998)*235/255+25/255;
                glColor4f(1.0, 1.0, 0.0, alf);
 
                dist := j*ddist;
                gladtoxy(angle, dist, x, y);
                glVertex2f(x, y);
                dist := (j + 1) * ddist;
                gladtoxy(angle, dist, x, y);
//                p2[0] := x;  p1[1] := y;
                glVertex2f(x, y);
 
              end;
            end;
        end;
        glEnd;
 
    end;
glEndList;
end;
Прорисовывается, следующим образом:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TRadarScope.Paint;
var
  nom, i : integer;
  nray : integer;
  errcode: cardinal;
begin
...
  glLineWidth(0.2);
  glBegin(GL_LINES);
  glCallList(5);
  glEnd;
...
end;
Так у меня получается, что всегда цвет ярко-желтый, независимо от значения амплитуды
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 11:47
Ответы с готовыми решениями:

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива...

Помогите разобраться с цветом в консоли
Скажите пожалуйста как в этой программе сделать так, чтобы в строке cin &gt;&gt; calc; можно вводить...

Графика. Не получается разобраться с цветом
Дан массив из 20 целых чисел. На экране нарисовать график, состоящий из 20 параллелепипедов высота...

Не могу разобраться разобраться с кодом меню
Добрый день. Я понимаю, что тут все, наверное, элементарно. Но я только начала изучение js и пока...

2
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
05.11.2013, 11:56 2
А значение переменной alf, точно находиться в диапазоне от 0 до 1 ?
1
4 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 4
05.11.2013, 12:15  [ТС] 3
Да. Может необходимо где-то что-то подключить.

Добавлено через 14 минут
Нашел, нужно при прорисовке было добавить
glEnable(GL_BLend);
и
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


Delphi
1
2
3
4
5
6
7
  glLineWidth(0.2);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glBegin(GL_LINES);
  glCallList(5);
  glEnd;
  glDisable(GL_BLEND);
0
05.11.2013, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2013, 12:15
Помогаю со студенческими работами здесь

Приветствую, не могу разобраться с кодом программы и не могу сделать .obj файл
.model tiny; нужно будет получить исполняемый файл формата СОМ .code org 100h start: mov ax,...

Не могу найти ошибку!! не могу не как разобраться! надо до завтра.
условие: Для 7 человек, среди которых есть мужчины и женщины, хранятся следующие данные: имя, пол...

Не могу написать комментарии для функции поиска, не могу разобраться...
void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int found, start, end; //...

Не могу разобраться с If-ами. Не могу найти ошибку
Только начал знакомство с программированием. Преподаватель задал задание, написать программу в VLC...

Не могу разобраться с циклами (не могу понять как сделать так чтоб цикл считывал каждый элемент, без массива!)
Натурально число а вводится пользователем.Определить количество не нудевых цифр этого числа . Не...

Не могу снять выделение цветом
Доброго вечера всем. На стареньком компьютере в Windows Xp я создал документ, выделил весь текст...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru