我的任务是编写MATLAB代码以生成一个由4部分组成的徽标,如屏幕截图所示。左上角应为黑色,右下角应为白色。另一个 程序应随机选择两种颜色。
我采取了以下方法:
clear all
clc
close all
x = [1 4 1 4 1 6.5 7 7];
y = [3 4 5.5 5 8 7 8 3];
fill(x,y,'k')
创建左上角的黑色部分。我想知道这种方法是否足够好,如果是,下一步是什么。我想将这两个变量存储在一个形状对象或其他东西(我不熟悉Matlab)并以某种方式旋转它。你能帮帮我吗?
答案 0 :(得分:5)
您不需要旋转,只需使用对称
clear all
clc
close all
x = [1 4 1 4 1 6.5 7 7];
y = [3 4 5.5 5 8 7 8 3]-3;
clrs=jet(10);
fill(x,y,'k')
hold on;
fill(2*max(x)-x,y,clrs(round(rand*10),:))
fill(x,-y,clrs(round(rand*10),:))
fill(2*max(x)-x,-y,'w')
答案 1 :(得分:4)
最简单的方法就是确保你的中心点(即不同颜色相遇的点)位于[0,0]
。然后,图形的旋转(90°的倍数)会向下变化,以更改轮廓的x
和/或y
值的符号。
如果您需要图形与[0 0]
不同,请在旋转后添加这些坐标。
从代码开始,您可以这样做:
x = [1 4 1 4 1 6.5 7 7]-7;
y = [3 4 5.5 5 8 7 8 3]-3;
c = [5 6];
col = [0 0 0;
rand(2,3);
1 1 1];
fill( x+c(1), y+c(2),col(1,:)); hold on;
fill(-x+c(1), y+c(2),col(2,:));
fill( x+c(1),-y+c(2),col(3,:));
fill(-x+c(1),-y+c(2),col(4,:)); hold off;
修改:澄清col
和c
个变量。
变量col
包含要在rgb样式中使用的颜色,其中每一行都是一种颜色。 rand
生成[0,1]
范围内的均匀随机数,这也是颜色值的预期值。在上面的代码中,生成2x3
随机矩阵,这意味着2个随机颜色完全适合col
矩阵。
变量c
包含图形的中心。如果您查看绘图,则中心将位于[5 6]
(沿x轴为5,沿y轴为6)。您可以使用两个变量,但我认为将两者保持在变量中更容易处理。我个人会对您的x
和y
变量做同样的事情,因为这样可以让您更轻松地使用rotation matrices,但这只是一个选择问题。