Мне нужно нарисовать флаг с RGB в Matlab, но я застрял - PullRequest
0 голосов
/ 15 февраля 2020

Мне нужно сделать флаг Танзании размером 400x450, используя RGB, но я застрял в цикле.

a=zeros(400,450,3);
a=uint8(a);
%making the green triangle
for i=1: 300
    for j=1 : 350
           if (0.5*i*j)
            a(i,j,1)=52;
            a(i,j,2)=235;
            a(i,j,3)=76;
           end
    end
end
imshow(a);

1 Ответ

0 голосов
/ 16 февраля 2020

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

Сначала возьмем флаг того размера, который вы намереваетесь нарисовать, и проверьте, где находится граница зеленого сечения для следующего цвета. Укажите начало и конец своей строки и запишите позиции. У вас есть (x1, y1) и (x2, y2). Вычислите уравнение для линии из этого и приведите его к чему-то вроде x + a * y + b = 0, где a и b - вычисленные вами числа.

Это говорит о том, какие точки находятся на линии. Вы хотите различать guish между левым и правым, поэтому вы проверяете, больше или меньше нуля. Пример с a = 2 и b = 100, чтобы показать вам, как будет выглядеть код:

for i=1: 300
  for j=1 : 350
    if (i+2*j-100<0)
      a(i,j,1)=52;
      a(i,j,2)=235;
      a(i,j,3)=76;
    end
  end
end
imshow(a);

После того, как вы выясните это, вставьте elseif для границы между черным и желтым, чтобы нарисовать первый желтая полоса Затем продолжите для каждой полосы.

...