MATLAB心形代码

心形一

n=200
x=linspace(-3,3,n)
y=linspace(-3,3,n)
z=linspace(-3,3,n)
[X,Y,Z]=ndgrid(x,y,z)
F=((-(X.^2).*(Z.^3)-(9/80).*(Y.^2).*(Z.^3))+((X.^2)+(9/4).*(Y.^2)+(Z.^2)-1).^3)
isosurface(F,0)
lighting phong
caxis
axis equal
colormap('flag')
view([60 30])
 

心形二:

function LoveFunc
LoveFunchdl=@(x,a)(x.^2).^(1/3)+0.9.*((3.3-x.^2).^(1/2)).*sin(a.*pi.*x);
hold on
grid on
axis([-3 3,-2 4])
x=-1.8:0.005:1.8;
text(0,3.3,'$f(x)=x^{\frac{2}{3}}+0.9(3.3-x^2)^{\frac{1}{2}}\sin(\alpha\pi x)$',...
    'FontSize',13,'HorizontalAlignment','center','Interpreter','latex');
txt2=text(-0.35,2.9,'','FontSize',13,'HorizontalAlignment','left','Interpreter','latex','tag','alphadata');
for a=1:0.01:20
    delete(findobj('type','line'))
    AlphaString=['$\alpha=',num2str(a),'$'];
    Color=([1.0000 0.4902 0.6627]-[0.2118 0.4667 0.9961]).*(a/20)+[0.2118 0.4667 0.9961];
    set(txt2,'string',AlphaString)
    plot(x,LoveFunchdl(x,a),'color',Color,'LineWidth',1.2);
    pause(0.003)
end
end

 心形三:

[x,y,z]=meshgrid(linspace(-3,3,120))
f=(x.^2+(9*y.^2)./4+z.^2-1).^3-((9*y.^2.*(z.^3))./80-(x.^2)).*(z.^3)
p=patch(isosurface(x,y,z,f,0))
set(p,'FaceColor','r')
grid on
daspect([1 1 1])
view(3)
camlight('right')
camlight('left')
camlight('headlight')
lighting phong
xlabel ('X')
ylabel('Y')
zlabel('Z')

 心形四:

sizeTheta=30;
sizeFai=40;
theta=linspace(0,pi,sizeTheta)';
nudge=0.0001; % used to avoid the operlapping
fai=linspace(0+nudge,pi/2-nudge,round(sizeFai/4));
a=9/4;
b=9/80;
A=1+(a-1)*(sin(theta).^2)*(sin(fai).^2);
B=(sin(theta).^2.*cos(theta).^3) * (1+(b-1)*(sin(fai).^2));
rou = zeros(size(A));
for iLoop=1:numel(A)
    curA=A(iLoop);
    curB=B(iLoop);
    % this is the polar coordinates version of the sextic equation found on
    % http://mathworld.wolfram.com/HeartSurface.html
    polyFactors=[curA^3,-curB,-3*curA^2,0,3*curA,0,-1];
    solutions=roots(polyFactors);    
    realRou=real(solutions(abs(imag(solutions))<1e-9));
    rou(iLoop)=realRou(realRou>0);    
end

% x,y,z for the quater of whole heart
x=rou.*(sin(theta)*cos(fai));
y=rou.*(sin(theta)*sin(fai));
z=rou.*(cos(theta)*ones(size(fai)));

% x,y,z for the whole heart
cordX=[x,-fliplr(x),-x,fliplr(x)];
cordY=[y,fliplr(y),-y,-fliplr(y)];
cordZ=[z,fliplr(z),z,fliplr(z)];

heartSudokuFig=figure('units','pixels',...
    'position',[200 50 630 630],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','heart sudoku',...
    'color',[0.99 0.99 0.99]);
for i=1:3
    for j=1:3
      heartSudokuAxes(i,j)=axes('Units','pixels',...
      'parent',heartSudokuFig,...
      'Position',[(i-1)*210-25,(j-1)*210-25-10,210+50,210+50],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XLim',[-1.28,1.28],'YLim',[-1.28,1.28],'ZLim',[-1.28,1.28],...
      'XColor','none','YColor','none','ZColor','none');
      hold(heartSudokuAxes(i,j),'on')
      camtarget([0, 0, 0]);
      view(30,20);
      
    end
end
markerColor=[248 150 170]./255;
lineColor=[248 150 170]./255;
lineWidth=0.8;
%[1 1]=====================================================================
for iLoop=1:3:size(cordX,1)
    plot3(heartSudokuAxes(1,1),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'Marker','.','MarkerSize',3.5,'MarkerEdgeColor',markerColor,'LineStyle','none');
    plot3(heartSudokuAxes(1,1),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end
for iLoop=1:4:size(cordX,2)
    plot3(heartSudokuAxes(1,1),cordX(:,iLoop),cordY(:,iLoop),cordZ(:,iLoop),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end
%[1 2]=====================================================================
for iLoop=1:3:size(cordX,1)
    plot3(heartSudokuAxes(1,2),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'Marker','.','MarkerSize',3.5,'MarkerEdgeColor',markerColor,'LineStyle','none');
    plot3(heartSudokuAxes(1,2),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),'color',...
        lineColor,'LineStyle','-','LineWidth',lineWidth);
end
for iLoop=1:size(cordX,2)
    plot3(heartSudokuAxes(1,2),cordX(:,iLoop),cordY(:,iLoop),cordZ(:,iLoop),'color',...
        lineColor,'LineStyle','-','LineWidth',lineWidth);
end
%[1 3]=====================================================================
for iLoop=1:size(cordX,1)
    plot3(heartSudokuAxes(1,3),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'Marker','.','MarkerSize',3.5,'MarkerEdgeColor',markerColor,'LineStyle','none');
    plot3(heartSudokuAxes(1,3),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end
for iLoop=1:size(cordX,2)
    plot3(heartSudokuAxes(1,3),cordX(:,iLoop),cordY(:,iLoop),cordZ(:,iLoop),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end
%[2 1]=====================================================================
for iLoop=[2 8 15 25]
    plot3(heartSudokuAxes(2,1),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'Marker','.','MarkerSize',3.5,'MarkerEdgeColor',markerColor,'LineStyle','none');
    plot3(heartSudokuAxes(2,1),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end
for iLoop=1:2:size(cordX,2)
    plot3(heartSudokuAxes(2,1),cordX(:,iLoop),cordY(:,iLoop),cordZ(:,iLoop),...
        'color',lineColor,'LineStyle','-','LineWidth',lineWidth);
end 
%[2 2]=====================================================================
for iLoop=1:2:size(cordX,1)
    plot3(heartSudokuAxes(2,2),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'Marker','.','MarkerSize',3.5,'MarkerEdgeColor',markerColor,'LineStyle','none');
    plot3(heartSudokuAxes(2,2),cordX(iLoop,:),cordY(iLoop,:),cordZ(iLoop,:),...
        'color',lineColor,'LineStyle','-','LineWidth',Linewidth)
   
end

 最后再送给女朋友一个小花花呗

grid on
[x,t]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
p=(pi/2)*exp(-t./(8*pi));
change=sin(15*t)/150;
u=1-(1-mod(3.6*t,2*pi)./pi).^4./2+change;
y=2*(x.^2-x).^2.*sin(p);

r=u.*(x.*sin(p)+y.*cos(p));
h=u.*(x.*cos(p)-y.*sin(p));

map=[0.9176    0.9412    1.0000
    0.9094    0.9341    0.9992
    0.9011    0.9271    0.9984
    0.8929    0.9200    0.9977
    0.8847    0.9130    0.9969
    0.8764    0.9059    0.9961
    0.8682    0.8988    0.9953
    0.8600    0.8918    0.9945
    0.8518    0.8847    0.9938
    0.8435    0.8777    0.9930
    0.8353    0.8706    0.9922
    0.8337    0.8698    0.9910
    0.8322    0.8690    0.9898
    0.8306    0.8682    0.9887
    0.8290    0.8674    0.9875
    0.8275    0.8667    0.9863
    0.8259    0.8659    0.9851
    0.8243    0.8651    0.9839
    0.8227    0.8643    0.9828
    0.8212    0.8635    0.9816
    0.8196    0.8627    0.9804
    0.8078    0.8521    0.9765
    0.7961    0.8415    0.9726
    0.7843    0.8310    0.9686
    0.7726    0.8204    0.9647
    0.7608    0.8098    0.9608
    0.7490    0.7992    0.9569
    0.7373    0.7886    0.9530
    0.7255    0.7781    0.9490
    0.7138    0.7675    0.9451
    0.7020    0.7569    0.9412
    0.6836    0.7400    0.9396
    0.6651    0.7232    0.9381
    0.6467    0.7063    0.9365
    0.6282    0.6894    0.9349
    0.6098    0.6725    0.9334
    0.5914    0.6557    0.9318
    0.5729    0.6388    0.9302
    0.5545    0.6219    0.9286
    0.5360    0.6051    0.9271
    0.5176    0.5882    0.9255
    0.5027    0.5776    0.9271
    0.4878    0.5670    0.9286
    0.4729    0.5565    0.9302
    0.4580    0.5459    0.9318
    0.4431    0.5353    0.9334
    0.4282    0.5247    0.9349
    0.4133    0.5141    0.9365
    0.3984    0.5036    0.9381
    0.3835    0.4930    0.9396
    0.3686    0.4824    0.9412
    0.3623    0.4742    0.9404
    0.3561    0.4659    0.9396
    0.3498    0.4577    0.9388
    0.3435    0.4494    0.9380
    0.3372    0.4412    0.9373
    0.3310    0.4330    0.9365
    0.3247    0.4247    0.9357
    0.3184    0.4165    0.9349
    0.3122    0.4082    0.9341
    0.3059    0.4000    0.9333
    0.2981    0.3918    0.9235
    0.2902    0.3835    0.9137
    0.2824    0.3753    0.9039
    0.2745    0.3670    0.8941
    0.2667    0.3588    0.8843
    0.2589    0.3506    0.8745
    0.2510    0.3423    0.8647
    0.2432    0.3341    0.8549
    0.2353    0.3258    0.8451
    0.2275    0.3176    0.8353
    0.2169    0.3086    0.8165
    0.2063    0.2996    0.7977
    0.1957    0.2906    0.7788
    0.1851    0.2816    0.7600
    0.1746    0.2726    0.7412
    0.1640    0.2635    0.7224
    0.1534    0.2545    0.7036
    0.1428    0.2455    0.6847
    0.1322    0.2365    0.6659
    0.1216    0.2275    0.6471];
set(gca,'CameraPosition',[2 2 2])
hold on
surface(r.*cos(t),r.*sin(t),h,'EdgeAlpha',0.1,...
    'MarkerEdgeColor',[0 0 0],'FaceColor','interp')
colormap(map)

总结:女生最懂女生,写代码再忙也要哄女朋友的呀 !!!

  • 17
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值