matlab心形动态图代码
- 格式:docx
- 大小:20.12 KB
- 文档页数:3
【C语言】编程输出“小♥”的代码#include<stdio.h>#include<math.h>#include <windows.h>#define r 10#define R 172int main(){int i,j,e;int a;int n;FILE *fp;if((fp=fopen("LOVE.txt","w"))==NULL){printf("File open error!\n");exit(0);}for(i=1,a=r;i<r/2;i++,a--){for(j=(int) ( r-sqrt((r*r-(a-i)*(a-i))) );j>0;j--){printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*sqrt((r*r-(a-i)*(a-i)));e++){printf("\3");fprintf(fp,"%s"," * ");}for(j=(int) ( 2*( r-sqrt((r*r-(a-i)*(a-i)))) );j>0;j--){printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*sqrt( (r*r-(a-i)*(a-i)) );e++){printf("\3");fprintf(fp,"%s"," * ");}printf("\n");fprintf(fp,"%s","\n");}for(i=1;i<40;i++){if(i==6){printf("(∩_∩)YOU AND ME(∩_∩)");i+=24;}printf("\3");fprintf(fp,"%s"," * ");}printf("\n");for(i=1;i<=R/2;i++){if(i%2||i%3)continue;for(j=(int) ( R-sqrt( (double) (R*R-i*i) ) );j>0;j--){printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*( sqrt( (double)(R*R-i*i) ) - (R-2*r) );e++){printf("\3");fprintf(fp,"%s"," * " );}printf("\n");}printf("自动播放:按任意键,自己控制:按0\n");printf("按完后请按enter键\n");scanf("%d",&n);if(n==0){while(1){system("color a");system("pause");system("color b");system("pause");system("color c");system("pause");system("color d");system("pause");system("color e");system("pause");system("color f");system("pause");}}else{while(1){system("color a");Sleep(100);system("color b");Sleep(100);system("color c");Sleep(100);system("color d");Sleep(100);system("color e");Sleep(100);system("color f");Sleep(100);system("color 0");Sleep(100);}}return 0;}循环语句和颜色变换就不说了,发的小♥的代码。
#include<stdio.h>#include<math.h>#include <windows.h>#define r 10#define R 172int main(void){FILE *fp;int n;if((fp=fopen("LOVE.txt","w"))==NULL){printf("File open error!\n");exit(0);}int i,j,e;int a;for(i=1,a=r;i<r/2;i++,a--){for(j=(int) ( r-sqrt((r*r-(a-i)*(a-i))) );j>0;j--) {printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*sqrt((r*r-(a-i)*(a-i)));e++){printf("\3");fprintf(fp,"%s"," * ");}for(j=(int) ( 2*( r-sqrt((r*r-(a-i)*(a-i)))) );j>0;j--) {printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*sqrt( (r*r-(a-i)*(a-i)) );e++){printf("\3");fprintf(fp,"%s"," * ");}printf("\n");fprintf(fp,"%s","\n");}for(i=1;i<40;i++){if(i==6){printf("(∩_∩)I LOVE MY MOTHER(∩_∩)");i+=30;}printf("\3");fprintf(fp,"%s"," * ");}printf("\n");for(i=1;i<=R/2;i++){if(i%2||i%3)continue;for(j=(int) ( R-sqrt( (double) (R*R-i*i) ) );j>0;j--){printf(" ");fprintf(fp,"%s"," ");}for(e=1;e<=2*( sqrt( (double)(R*R-i*i) ) - (R-2*r) );e++) {printf("\3");fprintf(fp,"%s"," * " );}printf("\n");}printf("请选着播放形式:\n自动播放:按 1 ,控制播放:按 0\n"); printf("按完数字后请按enter键\n");scanf("%d",&n);if(n==0){while(1){system("color a");system("pause");system("color b");system("pause");system("color c");system("pause");system("color d");system("pause");system("color e");system("pause");system("color f");system("pause");}}else{while(1){system("color a");Sleep(100);system("color b");Sleep(100);system("color c");Sleep(100);system("color d");Sleep(100);system("color e");Sleep(100);system("color f");Sleep(100);system("color 0");Sleep(100);}}return 0;}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求。
clc;%清屏ysy=figure('name','一起去看流星雨');%标题axis([0 80 0 80]);hold on;axis off;set(ysy,'color','k');%设置背景为黑色%%%%%以下是画月亮t6=-pi/3:0.01:0;x6=60+10*cos(t6);y6=60+10*sin(t6);plot(x6,y6,'color',[1 1 0]);%画第一条弧线t7=-pi*2/3:0.01:pi/3;x7=67.5+5*cos(t7);y7=60-sqrt(3)*5/2+5*sin(t7);plot(x7,y7,'color',[1 1 0]);%画第二条弧线fill([x6,x7],[y6,y7],'y');%将月亮填充为黄色%%%%%以下为画五角星line([30,33,34,35,38,36,38,34,30,32,30],[60,60,62.5,60,60,59,56.5,58,56.5,59,60],...'color','b','MarkerEdgeColor','b','linewidth',2);%画五角星fill([30,33,34,35,38,36,38,34,30,32,30],...[60,60,62.5,60,60,59,56.5,58,56.5,59,60],'b');%填充五角星%%%%%以下是画人%%%%%%%男t8=0:0.01:2*pi;x8=40+2*cos(t8);y8=24+4*sin(t8);plot(x8,y8,'b','linewidth',2);%%%%%画头line([40,40.8],[26,26],'color','y');%左眼line([41.4,41.8],[26,26],'color','y');%右眼line(41.3,24.1,'color','y','linestyle','.','erasemode','xor','markersize',5);%鼻line([41,41.8],[22,22],'color','y');%嘴line([39.8,39.8,38.3,38.3,41.7,41.7,40.8,40.8,39.8],[20,19,18.7,0,0.5,18.7,19,20,20],...'color','b','linewidth',2);%躯干line([41.7,41.7],[13.4,16.2],'color','k','linewidth',2)%清除被手臂挡住的线line([40.7,40.7],[0.35,8.7],'color','b','linewidth',2);%用一条线将矩形分开,就是腿line([40,41,44,45,41,40],[18.2,16,18.8,17.8,13.1,15.3],'color','b','linewidth',2);%%胳膊%%%%%%%%女t9=0:0.01:2*pi;x9=50+2*cos(t8);y9=22+4*sin(t8);plot(x9,y9,'color','m','linewidth',2);%%%%%画头line([50,49.2],[24,24],'color','y');%左眼line([48.2,48.6],[24,24],'color','y');%右眼line(48.7,22.1,'color','y','linestyle','.','erasemode','xor','markersize',5);%鼻line([48.2,49.2],[20,20],'color','y');%嘴line([49.8,49.8,48.3,48.3,46.3,48.3,48.3,51.7,51.7,53.7,51.7,51.7,50.8,50.8],...[18,17,16.7,8,4,4,0.5,0,4,4,8,16.7,17,18],'color','m','linewidth',2);%躯干line([48.3,48.3],[14.1,16.1],'color','k','linewidth',2)%清除挡住的线line([49.3,49.3],[0.35,4],'color','m','linewidth',2);%腿line([50,47.8,45.8,45,47.8,50],[16.4,16,18.4,17.8,14,14.4],'color','m','linewidth',2);%%胳膊b1=text(20,70,'哇塞!流星雨来了!','fontsize',16,'color','r');%输入字pause(1);%停顿一秒delete(b1);%删除b1b2=text(22,68,'听说...','fontsize',16,'color','r');pause(1);delete(b2);b3=text(24,66,'在流星雨下许的愿,一定会实现!','fontsize',16,'color','r');pause(2);delete(b3);b4=text(54,28,'愿我们相伴一生!','fontsize',16,'color','r');b5=text(10,30,'愿执子之手,','fontsize',16,'color','r');b6=text(12,22,'与子偕老!','fontsize',16,'color','r');a1=line(5,70,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星1a2=line(5,65,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星2a3=line(5,60,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星3a4=line(5,55,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星4a5=line(5,50,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星5x1=5;%流星1的初始横坐标y1=70;;%流星1的初始纵坐标x2=5;y2=65;x3=5;y3=60;x4=5;y4=55;x5=5;y5=50;dt1=0.4375;%递增量dt2=0.1;%递增量t1=x1;t2=x2;t3=x3;t4=x4;t5=x5;r1=1;%画心形中的小圆半径r2=4;%画心形中的大圆半径c1=39;%小圆1的初始横坐标d1=33;%小圆1的初始纵坐标c2=41;%小圆2的初始横坐标d2=33;%小圆2的初始纵坐标c3=38;%大圆1的初始横坐标d3=33;%大圆1的初始纵坐标c4=42;%大圆2的初始横坐标d4=33;%大圆2的初始纵坐标f1=c1+10;%第二个心形中小圆1的横坐标f2=c2+10;%第二个心形中小圆2的横坐标f3=c3+10;%第二个心形中大圆1的横坐标f4=c4+10;%第二个心形中大圆2的横坐标%第二个心形中的纵坐标跟第一个共用t=0.09;%递增量t10=0:0.01:pi;%设置弧度t11=-pi*11/30:0.01:0;t12=-pi:0.01:-pi*19/30;%流星雨开始及心形移动while t5<80 %循环开始t1=t1+dt1;t2=t2+dt1;t3=t3+dt1;t4=t4+dt1;t5=t5+dt1;x1=t1;x2=t2;x3=t3;x4=t4;x5=t5;y1=y1+dt2;y2=y2+dt2;y3=y3+dt2;y4=y4+dt2;y5=y5+dt2;set(a1,'xdata',[x1,x1],'ydata',[y1,y1]);%流星1的移动set(a2,'xdata',[x2,x2],'ydata',[y2,y2]);%流星2的移动set(a3,'xdata',[x3,x3],'ydata',[y3,y3]);%流星3的移动set(a4,'xdata',[x4,x4],'ydata',[y4,y4]);%流星4的移动set(a5,'xdata',[x5,x5],'ydata',[y5,y5]);%流星5的移动c1=c1+t/3.2;c2=c2+t/3.2;c3=c3+t/3.2;c4=c4+t/3.2;f1=f1-t/3.2;f2=f2-t/3.2;f3=f3-t/3.2;f4=f4-t/3.2;d1=d1+t;d2=d2+t;d3=d3+t;d4=d4+t;c5=c1+r1*cos(t10);d5=d1+r1*sin(t10);f5=f1+r1*cos(t10);c6=c2+r1*cos(t10);d6=d2+r1*sin(t10);f6=f2+r1*cos(t10);c7=c3+r2*cos(t11);d7=d3+r2*sin(t11);f7=f3+r2*cos(t11);c8=c4+r2*cos(t12);d8=d4+r2*sin(t12);f8=f4+r2*cos(t12);plot(c5,d5,'r');%小圆弧1plot(c6,d6,'r');%小圆弧2plot(c7,d7,'r');%大圆弧1plot(c8,d8,'r');%大圆弧2plot(f5,d5,'r');%第二个心形小圆弧1plot(f6,d6,'r');%小圆弧2plot(f7,d7,'r');%大圆弧1plot(f8,d8,'r');%大圆弧2pause(0.01);%停顿0.01秒drawnow;fill([c1-1.1,c2+1.1,c2+1.1,c1-1.1],[d1-4,d1-4,d2+1,d2+1],'k');%除去显示出来的心形1,以便移动fill([f1-1.1,f2+1.1,f2+1.1,f1-1.1],[d1-4,d1-4,d2+1,d2+1],'k');%除去显示出来的心形2,以便移动end;%循环结束plot(c5,d5,'r');plot(c6,d6,'r');plot(c7,d7,'r');plot(c8,d8,'r');%显示最后的心形。
C语言循环心形代码在C语言中,使用循环语句可以实现很多有趣的图形。
本文将介绍一个用循环语句实现的心形图案,代码非常简单,只有14行,但可以启迪大家利用循环语句实现更丰富的图形。
```c#include <stdio.h>代码中的核心思想是要把心形图案抽象成一个数学公式,然后通过嵌套循环逐渐绘制出来。
具体来说,我们可以通过改变(x,y)坐标系下的x和y的值来控制绘制的位置。
首先,我们需要明确一个数学公式:x2 + y2 − 1 = x3 − y3这个公式可以被转换为:接下来,我们将这个公式转化为代码:```cheart = ((x * x + y * y - 1)*(x * x + y * y - 1)*(x * x + y * y - 1) - x * x * y * y * y) / 1000000.0;```这里的heart代表心形图案中每一个点的值,根据这个值,我们可以判断它应该画上实心还是空心,这就是最后一个for循环用来完成的。
在这个循环中,首先从y=30开始,每一次循环减小一行,一直划到y=-30为止。
在每一行中,从x=-30开始,每一次循环增加一列,一直划到x=30为止,这样我们就可以在(-30,30)这个范围内绘制出整个心形图案。
在每一个坐标点上,我们需要计算出它对应的heart值。
如果这个值小于等于0.01,我们就画上一个实心的星号,否则就留空。
这里选择的0.01是一个适当的界限值,具体大家可以根据自己的喜好修改。
最后,我们可以运行程序,就可以得到一个漂亮的心形图案了。
输出结果:```**********************************************************************************************************************************************```此代码可以作为初学者用C语言练习循环语句的学习范例,同时也是一个很不错的创意实现。
c语言跳动爱心代码C语言作为一种广泛应用于计算机编程的语言,不仅可以实现各种功能,还可以用来表达情感。
今天,我想和大家分享一个特别的C语言代码——跳动爱心代码。
首先,我们需要了解一下C语言的基本语法和数据类型。
C语言是一种结构化的编程语言,它使用变量来存储和操作数据。
在C语言中,我们可以使用基本数据类型,如整型、浮点型和字符型,来定义变量。
此外,C语言还提供了一些控制结构,如条件语句和循环语句,来控制程序的执行流程。
接下来,让我们来编写跳动爱心代码。
首先,我们需要使用C语言的图形库来绘制爱心图案。
在C语言中,我们可以使用图形库函数来绘制各种图形。
这里,我们使用了一个简单的图形库函数来绘制一个爱心图案。
```c#include <stdio.h>#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");int x = getmaxx() / 2;int y = getmaxy() / 2;for (int i = 0; i <= 300; i++){setcolor(i % 15 + 1);circle(x - i / 2, y - i / 2, i);circle(x + i / 2, y - i / 2, i);delay(10);cleardevice();}closegraph();return 0;}```在这段代码中,我们首先使用`initgraph`函数来初始化图形库。
然后,我们使用`getmaxx`和`getmaxy`函数来获取屏幕的宽度和高度,以便将爱心图案绘制在屏幕的中心位置。
接下来,我们使用一个循环来绘制跳动的爱心图案。
在每次循环中,我们使用`setcolor`函数来设置绘制图形的颜色,然后使用`circle`函数来绘制两个圆形,形成一个爱心图案。
vb动态爱心代码VB动态爱心代码是一种在Visual Basic程序开发中常用的代码技术,它可以通过编写一定的代码实现爱心动态效果的展示。
这种技术常常被应用于网页制作、软件UI 设计和图形动画等领域中,达到提升用户体验、增强视觉效果等诸多效果。
下面,本文将对VB动态爱心代码进行详细阐述。
一、VB动态爱心代码的基础原理VB动态爱心代码其实是基于数学图形学的基础原理实现的。
具体来说,就是通过矢量、二维变换等于一系列的计算,将爱心的形状固定在一个特定的坐标轴上,并且在此基础上完成了一些重要属性的变化,如颜色、大小等,从而实现了爱心的动态展示。
二、VB动态爱心代码的编写过程1、新建VB程序首先,在Visual Basic开发环境中,需要新建一个VB窗体程序,并且添加相应的控件和属性。
2、编写相应代码在VB窗体程序中,需要通过编写相应的代码,实现爱心的动态展示。
由于本文的主要重点是VB动态爱心代码的编写,因此以下将对部分核心代码进行详细说明。
Dim X, Y, a, b, T, m As Single m = 50 a = 5 'a表示心形图纸上的横向半轴长 b = 4 'b表示心形图纸上的纵向半轴长 T = 0.1 随着上述初始值的赋值,心形图就可以顺利地生成。
3、实现效果最后,在编写完相应的代码之后,就可以完成VB动态爱心代码的应用,并且实现特定效果的展示,使爱心形状呈现出不同的运动轨迹和颜色特效,同时提升动态效果的视觉效果。
三、VB动态爱心代码的应用范围VB动态爱心代码广泛应用于软件开发、网页设计、图形动画等领域,具有良好的可移植性和易用性,在这些领域中,VB动态爱心代码的应用有以下优点:1、提升用户体验通过VB动态爱心代码的应用,可以给用户带来非常好的视觉体验,特别是在软件UI界面设计和网页设计中,可以增强产品、品牌的代表性。
2、增强视觉效果VB动态爱心代码具有较强的可视化效果,通过灵活组合不同颜色,形状等要素,可以展示出丰富的图形视觉效果,提升软件、网页等产品在用户中的美感和可读性。
创新思维训练指导老师:李安完成日期:2015年7月8日题目:利用MATLAB绘制函数动态图形目的:(1)初步了解MATLAB的界面以及简单应用;(2)学会用MATLAB绘制常见图形;(3)通过制图,进一步加深对函数的理解,观察函数的性质。
内容:1、绘制基本的一元函数动态图例:在一个坐标系中绘制函数y=x^2,y=x,y=cos(x)的图形,并通过movie绘制上述函数动画。
步骤:(1)选定题目:三个小组成员一起选定一个要做的创新思维题目;(2)想法集合:选好题目后,每个成员开动脑筋,说说自己的想法以及思路,然后将所有人的思路汇总在一起;(3)分工合作:三人分别负责一个模块,一人负责程序,一人负责调试,一人负责写作,三人分工明确,彼此独立,却又相互依存。
基本程序:clc;clear;x=-2:0.05:2;y1=x.^2;y2=x;y3=cos(x);figure(1)上述程序比较简单,只能实现三个函数的静态表现,而且图像未经任何修饰。
之后通过小组讨论,上网查阅,将程序进一步的修改和完善,最终达到预期效果。
最终程序如下:最终源码:clc;clear;x=-2:0.05:2;xlabel('x'),ylabel('y')title('y=x^2和y=x和y=cos(x)的图像','Color','b');text(-1.35,1.5,'\rightarrow y1=x^2');text(-1,-1,'\leftarrow y2=x');text(1.8,0,'\leftarrow y3=cos(x)');y1=x.^2;y2=x;y3=cos(x);figure(1)n=length(x);grid onhold onfor i=1:nplot(x(i),y1(i),'gp',x(i),y2(i),'r*',x(i),y3(i),'c+');axis([min(x)-1 max(x)+1 min(y1)-1 max(y1)+1]);axis([min(x)-1 max(x)+1 min(y2)-1 max(y2)+1]);axis([min(x)-1 max(x)+1 min(y3)-1 max(y3)+1]);M(i)=getframe;pause(0.1);endmovie(M);legend('\ity=x^2','\ity=x','\ity=cos(x)')运行程序后的结果:三条函数均能以动态点型绘出,其中函数y=x^2表现为绿色五星型,函数y=x表现为红色星号,函数y=cos(x)表现为青色十字型。
Matlab绘制三维动态心形It’s OK to send a pic to your girlfriend on Valentine's Day情人节蛋疼玩意效果图:原始代码:%仅供参考,自助修改,原则上自己动手,要是非常强烈的要帮忙%可以联系我的QQ 865802870 ,但愿我还在上面.Source code:%构造体积方程和坐标轴,画出图形;linspace(a,b,c)均匀生成介于a到b的c个值,c 的默认为100。
Meshgrid生成矩阵网格。
[X,Y,Z] = meshgrid(linspace(-3,3,101));%3D心型图方程如下;F = -X.^2.*Z.^3-(9/80).*Y.^2.*Z.^3+(X.^2+(9/4).*Y.^2+Z.^2-1).^3;hFigure = figure;sz = get(hFigure, 'Position');set(hFigure, 'Position', [sz(1)-0.15*sz(3) sz(2) 1.3*sz(3) sz(4)]);set(hFigure,'color','w', 'menu','none')hAxes = axes('Parent',hFigure,'NextPlot','add',...'DataAspectRatio',[1 1 1],...'XLim',[30 120],'YLim',[35 65],'ZLim',[30 75]);view([-39 30]);axis off% 制作出动态的隐形效果;hidden on% 画出网格,制作网格动态效果;% 快渲染心得背面:p = patch(isosurface(F,-0.001));set(p,'FaceColor','w','EdgeColor','w');% 构造Y-Z平面,,描完函数在该平面的点:for iX = [35 38 41 45 48 51 54 57 61 64 67]plane = reshape(F(:,iX,:),101,101);cData = contourc(plane,[0 0]);xData = iX.*ones(1,cData(2,1));plot3(hAxes,xData,cData(2,2:end),cData(1,2:end),'r');pause(.1), drawnowend% 构造X-Z平面,描完函数在该平面的点:for iY = [41 44 47 51 55 58 61]plane = reshape(F(iY,:,:),101,101);cData = contourc(plane,[0 0]);yData = iY.*ones(1,cData(2,1));plot3(hAxes,cData(2,2:end),yData,cData(1,2:end),'r');pause(.1), drawnowend% 构造X-Y平面,描完函数在该平面的点:for iZ = [36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 69 71] plane = F(:,:,iZ);cData = contourc(plane,[0 0]);startIndex = 1;if size(cData,2) > (cData(2,1)+1)startIndex = cData(2,1)+2;zData = iZ.*ones(1,cData(2,1));plot3(hAxes,cData(1,2:(startIndex-1)),...cData(2,2:(startIndex-1)),zData,'r');endzData = iZ.*ones(1,cData(2,startIndex));plot3(hAxes,cData(1,(startIndex+1):end),...cData(2,(startIndex+1):end),zData,'r');pause(.1), drawnowend%给三维心着色set(p,'FaceColor','r','EdgeColor','w');pause(.2);set(p,'FaceColor','w','EdgeColor','r');%函数已经画完,接下来为文字部分;pause(.2)%设置字体大小,粗细,位置等,以下是打出I (心型图) Wendy;text(7,50,70,'I', 'fontWeight','bold','FontAngle','italic','FontName','Trebuchet MS','fontsize',60,'Color','r')pause(.5)text(80,50,43,'Math', 'fontWeight','bold','FontAngle','italic','FontName','Trebuchet MS','fontsize',60,'Color','r')pause(.2)line([20 80],[50 50],[52.5 52.5], 'color','r')line([50 50],[20 80],[52.5 52.5], 'color','r')line([50 50],[50 50],[30 80], 'color','r')%制作者签名;text(40,60,30,'Made By William 8/8/2012', 'fontsize',8)text(35,45,30,'', 'fontsize',8)%制作心的动态效果% for i =1:28% set(p,'FaceColor','r','EdgeColor','w');% pause(.1);% set(p,'FaceColor','r','EdgeColor','r');% pause(.2)% end% refer to /art/898961...%and/questions/1526898/how-do-i-reproduce-this-heart-shaped-m esh-in-matlab1%笛卡尔;x=0:0.01:2*pi;y=1-cos(x);polar(x,y)2%简单心;figure(2)ezplot(vectorize('17*x^2-16*abs(x)*y+17*y^2-225'));3%完美心;4figure(1)5N=200;6f1=@(x,y,z)(x.^2+(9/4)*y.^2+z.^2-1).^3-x.^2.*z.^3-(11/80)*y.^2.*z.^3;7[X,Y,Z]=meshgrid(linspace(-1.5,1.5,N));8set(patch(isosurface(X,Y,Z,f1(X,Y,Z),0)),'facecolor','r','edgecolor','none');9light10view(-10,24)11%心痕;12[x,y,z]=meshgrid(linspace(-1.3,1.3));13val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%画出等值面14isosurface(x,y,z,val,0);% View 视角colormap 色图0-115axis equal;view(-10,10);colormap([1 0.2 0.2])16%花心;17clear;clc;close all18c=5;19t=linspace(-c,c);20[x,y]=meshgrid(t);21z=17*x.^2-16*abs(x).*y+17*y.^2-225;22pcolor(x,y,z);23shading interp24pause(2);25spinmap(10)26%构造体积方程和坐标轴,画出图形;27[X,Y,Z] = meshgrid(linspace(-3,3,101));2829%3D心型图方程如下;30 F = -X.^2.*Z.^3-(9/80).*Y.^2.*Z.^3+(X.^2+(9/4).*Y.^2+Z.^2-1).^3;31hFigure = figure;32sz = get(hFigure, 'Position');33set(hFigure, 'Position', [sz(1)-0.15*sz(3) sz(2) 1.3*sz(3) sz(4)]); 34set(hFigure,'color','w', 'menu','none')3536hAxes = axes('Parent',hFigure,'NextPlot','add',...37'DataAspectRatio',[1 1 1],...38'XLim',[30 120],'YLim',[35 65],'ZLim',[30 75]);39view([-39 30]);40axis off4142% 制作出动态的隐形效果;4344hidden on4546% 画出网格,制作网格动态效果;474849% 快渲染心得背面:5051p = patch(isosurface(F,-0.001));52set(p,'FaceColor','w','EdgeColor','w');5354% 构造Y-Z平面,,描完函数在该平面的点:55for iX = [35 38 41 45 48 51 54 57 61 64 67]56plane = reshape(F(:,iX,:),101,101);57cData = contourc(plane,[0 0]);58xData = iX.*ones(1,cData(2,1));59plot3(hAxes,xData,cData(2,2:end),cData(1,2:end),'k');60pause(.1), drawnow61end6263% 构造X-Z平面,描完函数在该平面的点:64for iY = [41 44 47 51 55 58 61]65plane = reshape(F(iY,:,:),101,101);66cData = contourc(plane,[0 0]);67yData = iY.*ones(1,cData(2,1));68plot3(hAxes,cData(2,2:end),yData,cData(1,2:end),'k');69pause(.1), drawnow70end7172% 构造X-Y平面,描完函数在该平面的点:73for iZ = [36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 69 71] 74plane = F(:,:,iZ);75cData = contourc(plane,[0 0]);76startIndex = 1;77if size(cData,2) > (cData(2,1)+1)78startIndex = cData(2,1)+2;79zData = iZ.*ones(1,cData(2,1));80plot3(hAxes,cData(1,2:(startIndex-1)),... 81cData(2,2:(startIndex-1)),zData,'k');82end83zData = iZ.*ones(1,cData(2,startIndex)); 84plot3(hAxes,cData(1,(startIndex+1):end),... 85cData(2,(startIndex+1):end),zData,'k');86pause(.1), drawnow87end。
c语言代码爱心动态C语言代码爱心动态前言计算机科学是一门非常有趣的学科,它不仅涉及到硬件和软件,还涉及到算法和数据结构等方面。
而编程语言则是计算机科学中的重要组成部分,C语言作为一种高效、快速、通用的编程语言,被广泛应用于操作系统、嵌入式系统、游戏开发等领域。
本文将介绍如何使用C语言代码实现一个爱心动态。
准备工作在开始写代码之前,我们需要先了解一下如何在C语言中绘制图形。
C 语言并没有提供直接绘制图形的函数库,但我们可以使用第三方库来实现这个功能。
在本文中,我们将使用graphics.h库来绘制图形。
graphics.h是一个基于BGI(Borland Graphics Interface)的图形库,在Windows平台上可以直接使用。
但是,在其他平台上需要进行一些配置才能使用。
这里我们不再赘述。
步骤一:绘制两个圆首先,我们需要绘制两个圆来构成爱心的左右两侧。
代码如下:```#include <graphics.h>#include <math.h>int main(){initgraph(640, 480); // 初始化窗口int x1 = 240, y1 = 200, x2 = 400, y2 = 200; // 圆心坐标 int r = 50; // 圆的半径setcolor(RED); // 设置颜色为红色circle(x1, y1, r); // 绘制左侧圆circle(x2, y2, r); // 绘制右侧圆getch(); // 暂停程序,等待用户按下任意键结束程序closegraph(); // 关闭窗口return 0;}```运行代码,可以看到窗口中绘制了两个红色的圆。
步骤二:绘制两条直线接下来,我们需要在两个圆之间绘制一条直线。
代码如下:```#include <graphics.h>#include <math.h>int main(){initgraph(640, 480); // 初始化窗口int x1 = 240, y1 = 200, x2 = 400, y2 = 200; // 圆心坐标int r = 50; // 圆的半径setcolor(RED); // 设置颜色为红色circle(x1, y1, r); // 绘制左侧圆circle(x2, y2, r); // 绘制右侧圆line(x1 + r * cos(45), y1 + r * sin(45), x2 - r * cos(45), y2 + r * sin(45)); // 绘制直线getch(); // 暂停程序,等待用户按下任意键结束程序closegraph(); // 关闭窗口return 0;}运行代码,可以看到窗口中绘制了两个圆和一条直线。