您当前的位置: 首页 >  matlab

slandarer

暂无认证

  • 2浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MATLAB 简易JK裙绘制器

slandarer 发布时间:2020-11-28 17:23:45 ,浏览量:2

另制作了更立体版本,将其放在文章最后,效果如下: 在这里插入图片描述

做了一个简易JK裙绘制器 使用按键R选择贴图 推荐尺寸1:1或3:5 绘制效果: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 当然也可以来些恐怖的配色。。。。 在这里插入图片描述 在这里插入图片描述

完整代码:

function fillJK
fig=figure('units','pixels',...
        'position',[350 100 500 500],...
        'Numbertitle','off',...
        'name','JK',...
        'Color',[1 1 1],...
        'resize','off',...
         'menubar','none');

ax=axes('Units','pixels',...
        'parent',fig,...  
        'Color',[1 1 1],...
        'Position',[0 0 500 500],...
        'XLim',[0 100],...
        'YLim',[0 100],...
        'XGrid','on','YGrid','on');
hold(ax,'on')   
[Lu_X,Lu_Z]=pwLine(0:0.1:120,7,3,asin(0.1/3));
[Ld_X,Ld_Z]=pwLine(0:0.1:120,9,1,asin(0.1/1));
Lu_Y=(60+20).*ones(1,length(0:0.1:120));
Ld_Y=20.*ones(1,length(0:0.1:120));

Lu_X=Lu_X+(max(Ld_X)-max(Lu_X))/2;
%plot3(Lu_X,Lu_Y,Lu_Z)
%plot3(Ld_X,Ld_Y,Ld_Z)

Xset=inter3D(Lu_X',Ld_X',length(Lu_X));
Yset=inter3D(Lu_Y',Ld_Y',length(Lu_Y));
Zset=inter3D(Lu_Z',Ld_Z',length(Lu_Z));

Pic=[];
try
    Pic=imread('示例.png');
catch
end
h=surface(ax,Xset,Yset,Zset,'FaceColor','texturemap','EdgeColor','texturemap');
if isempty(Pic)
else
    PicR=Pic(:,:,1);PicR=PicR';
    PicG=Pic(:,:,2);PicG=PicG';
    PicB=Pic(:,:,3);PicB=PicB';
    tpPic(:,:,1)=PicR;
    tpPic(:,:,2)=PicG;
    tpPic(:,:,3)=PicB;
    w=fspecial('gaussian',[3 3],3);
    flPic=imfilter(tpPic,w);
    set(h,'CData',flPic,'FaceColor','texturemap','EdgeColor','texturemap')
end
lightangle(ax,-10,61)
lighting(ax,'gouraud')
shading(ax,'flat')
text(2,96,'JK裙贴图展示器','FontSize',11)
text(2,92,'通过按键"R"更换贴图,建议比例3:5','FontSize',11)

set(gcf, 'KeyPressFcn', @key) 
function key(~,event)
    if event.Key=='r'
        try
        [filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
            '*.*','All Files' });
        Pic=[];
        Pic=imread([ pathname,filename]);
        PicR=Pic(:,:,1);PicR=PicR';
        PicG=Pic(:,:,2);PicG=PicG';
        PicB=Pic(:,:,3);PicB=PicB';
        if size(Pic,1)==size(Pic,2)
            PicR=repmat(PicR,[5,3]);
            PicG=repmat(PicG,[5,3]);
            PicB=repmat(PicB,[5,3]);
        end
        tpPic(:,:,1)=PicR;
        tpPic(:,:,2)=PicG;
        tpPic(:,:,3)=PicB;
        w=fspecial('gaussian',[3 3],3);
        flPic=imfilter(tpPic,w);
        set(h,'CData',flPic)
        catch
        end    
    end
end


    function Pset=inter3D(P1,P2,N)
        coeMat=linspace(0,1,N);
        Pset=P1+(P2-P1)*coeMat;
    end

    function [newX,newY]=pwLine(X,p1L,p2L,theta)      
        newX=X(1);
        newY=0;
        for i=2:length(X)
            dX=X(i)-X(i-1);
            if mod(X(i),p1L+p2L)            
关注
打赏
1664692598
查看更多评论
0.0467s