当前位置 博文首页 > xuanzhigu的博客:matlab制作徽标

    xuanzhigu的博客:matlab制作徽标

    作者:[db:作者] 时间:2021-07-04 16:01

    matlab制作徽标

    这里我参考了网上的一些例子,详细介绍制作简单徽标的过程。建立脚本文件.m,由于版本问题,可能有些人使用时字体不能显示,因为一些新的字体的原因旧版本的matlab未能添加导致,可自行修改字体解决。

    建立显示空间区域

    clc;
    clear;
    figure();
    ax = gca;
    hold(ax,'on');                              %hold(ax,___) 为 ax 指定的坐标区而非当前坐标区设置 hold 状态。指定坐标区作为以上任何语法的第一个输入参数。使用单引号将 'on''off' 输入引起来,例如 hold(ax,'on')axis(ax,'equal','off',[-35,35,-35,35]);     %axis([xmin xmax ymin ymax]): [ ]中分别给出x轴和y轴的最大值、最小值
    

    画同心圆环

    % 画外圆
    plot(ax,30*exp(1i*(0:0.01:2*pi)),'color',[0.5,0,0.7],'linewidth',4);
    %li是复数中的i,30是半径,exp(2) 就等于 e^2,在复变中的实部与虚部可以表示横纵坐标,即在0-2pi之间,间隔0.01取值,密集取点,形成近似圆                                       
    % 画内圆
    plot(ax,22*exp(1i*(0:0.01:2*pi)),'Color',[0.5,0,0.5],'LineWidth',4);%同理
    

    画内折线

    a(1,:) = 22*exp(1i*2*pi*(0:1/8:1));
    %li是复数中的i,22是半径,exp(2) 就等于e^2 ,在复变中的实部与虚部可以表示横纵坐标,即8等分半径为22的圆
    a(2,:) = 22* sin(pi/4)/sin(5*pi/8)   * exp( 1i*2*pi*(1/16:1/8:17/16) );
    %同理等分半径为22* sin(pi/4)/sin(5*pi/8)的圆参考黄金比例
    plot(ax,a(:),'Color',[0.5,0,0.5],'LineWidth',4);  %a(:)作用是将矩阵二维降为一维空间,遵循【1 2 34 5 6】降维后【1 4 2 5 3 6】达到交叉连线的作用
    
    
    填充文字
    text(ax,-13,0,'和','FontName','楷体','FontSize',110,...  %控制字体的位置、字体型号、大小、颜色、粗细
        'Color',[0.5,0,0.5])                                %[0.5 0.5 0.5]是RGB颜色空间的值,是归一化之后的结果,可以参考ps中的颜色调和比例
        
    text(ax,3,-1,'平','FontName','楷体','FontSize',18,...   
        'Color',[0.5,0,0.5])
    

    圆环环绕文字制作

    % 环绕字体
    circleWord1  = ' FAN YAO XI MENG ';  %分开是为了后边的对称
    circleWord2 = '· 9102 ·';            %由于代码旋转原理的原因和时间有限,只能先倒序显示文字
    wordlength1=size(circleWord1,2 ) ;   %求长size(a,1 ) size(a,2 ) 分别是求矩阵a的行、列长度,也可求字符串
    wordlength2=size(circleWord2,2);
    for i=1:wordlength1  
        step1(i)=5;
    end
    for i=1:wordlength2
        step2(i)=5;
    end
    Angle1 =[180  100-200/sum(step1).*cumsum(step1)  linspace(-80,80,wordlength1)];  %角度范围设置
    Angle2 =[280  100-200/sum(step2).*cumsum(step2)  linspace(-50,50,wordlength2)];
    Angle2= fliplr(Angle2); %反向取值
    for ii = 1:wordlength1+wordlength2   
        if ii < wordlength1+1
            t = text(ax,0,0,circleWord1(ii));
            t.Position = [26.5*cosd(Angle1(ii)+90) 26.5*sind(Angle1(ii)+90)]; %cosd是以度为参数的计算
            t.Rotation = Angle1(ii);
        else
            t = text(ax,0,0,circleWord2(ii-wordlength1));
            t.Position = [25.5*cosd(Angle2(ii-wordlength1)-90)  25.5*sind(Angle2(ii-wordlength1)-90)];
            t.Rotation = Angle2(ii-wordlength1);
        end
        t.FontName = 'Segoe UI'; %Segoe UI 是比较新的字体,更加美观
        t.FontSize = 32;
        t.FontWeight = 'bold'; %设置粗细
        t.Color = [0.5 0 0.5]; 
        t.HorizontalAlignment = 'center';  %可自行参考网上的解释
    end
    

    以上就是制作的matlab代码,see you again !

    最终效果图片

    在这里插入图片描述

    cs