
正文
用c语言椭圆函数画玫瑰花 c语言画椭圆程序
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求玫瑰的函数图像
matlab源代码用c语言椭圆函数画玫瑰花:function plot_rose
draw_main(450,90);
function draw_main(x,y)
%粉红色玫瑰
arcdata{1}=[65 -60 150 350 8
66 -54 300 470 8
65 -56 30 230 10
64 -57 300 490 17];
ellipsedata{1}=[73 -30 250 450 27 40
59 -30 100 290 27 40
65 -40 140 270 20 30];
arcdata{2}=[0 0 150 350 12
1 8 280 470 12
0 2 30 230 16
0 3 80 240 28
2 8 180 330 22
-2 2 310 460 25];
ellipsedata{2}=[-12 30 120 300 30 40
10 28 250 423 30 42
-4 10 290 393 30 40];
ellipsedata{3}=[120 5 0 360 15 25];
ellipsedata{4}=[-70 10 0 360 14 20];
rose_e{2}=[x+16 y+32 235 355 26 35
x-15 y+32 190 310 30 35
x+0 y+35 190 350 43 50];
rose_e{1}=[x+80 y-48 220 350 22 50
x+50 y-48 190 320 22 50
x+65 y-28 180 360 36 50];
rose_e{3}=[x+120 y-6 200 340 17 25
x+120 y+7 160 380 17 27];
rose_e{4}=[x-70 y+15 140 390 17 20
x-75 y-10 205 340 10 30
x-60 y-10 195 340 5 30];
arcdata{3}=[0 82 190 350 6];
ss={'m','r','b','y'};
s0={'k','k','g'};
figure('menubar','none','numbertitle','off','name','rose');
% figure('numbertitle','off','name','rose');
hold on
for j=1:length(ellipsedata)
for i=1:size(ellipsedata{j},1)
rectangle('Position',[x+ellipsedata{j}(i,1)-ellipsedata{j}(i,5),y+ellipsedata{j}(i,2)-ellipsedata{j}(i,6),2*ellipsedata{j}(i,5),2*ellipsedata{j}(i,6)],'Curvature',[1,1],...
'FaceColor',ss{j})
end
if j4
for i=1:size(arcdata{j},1) draw_arc(x+arcdata{j}(i,1),y+arcdata{j}(i,2),arcdata{j}(i,3),arcdata{j}(i,4),arcdata{j}(i,5),s0{j});
end
end
for i=1:size(rose_e{j},1)
plot_rose_e(rose_e{j},j);
end
end
for j=1:3
zhuzhi=[x-98,y+100+j,255,371,100,80
x-20,y+30+j,260,358,140,140
x+224,y+20+j,180,218,160,140];
draw_branch(zhuzhi);
end
ce_branch=[x+70,y+34,180,233,140,140;
x,y+40,205,255,100,120;
x+135,y-30,209,249,72,120;
x,y+20,263,301,100,120;
x+85,y-10,278,305,100,120;
x+100,y-62,282,308,90,120;
x-50,y-10,277,314,30,120;
x+70,y+80,222,266,52,120;
x-60,y-45,229,266,52,120;
x+79,y-45,229,266,52,120;
x+84,y,224,273,52,120;
x+110,y+40,240,282,100,120];
draw_branch(ce_branch);
t_leaf=[x+168,y+282,10,20,-40;
x+160,y+252,8,16,260;
x+145,y+270,8,16,-15;
x+156,y+224,10,20,-45;
x+150,y+200,8,16,270;
x+135,y+220,8,16,-10;
x+146,y+144,8,16,-80;
x+130,y+130,6,12,235;
x+125,y+154,7,14,-10;
x+78,y+98,6,12,-90;
x+60,y+90,5,10,180;
x+70,y+109,5,10,-45;
x-125,y+270,12,24,60;
x-95,y+270,10,20,10;
x-110,y+245,10,20,90;
x-105,y+220,10,20,45;
x-100,y+190,8,16,135;
x-75,y+210,8,16,-45;
x+65,y+190,10,20,-45;
x+40,y+185,8,16,0;
x+55,y+165,8,16,90];
for j=1:size(t_leaf,1)
draw_elli(t_leaf(j,1),t_leaf(j,2),t_leaf(j,3),t_leaf(j,4),t_leaf(j,5));
end
axis ij
axis off
set(gcf,'color','k');
daspect([1,1,1])
% 画旋转椭圆
function draw_elli(x0,y0,a,b,theta)
theta=-theta;
t = 0:0.01:2*pi;
x = a*cos(t);
y = b*sin(t);
xy = zeros(2,length(t));
for i = 1:length(t)
xy(:,i) = expm([0,-pi/180*theta;pi/180*theta,0])*[x(i);y(i)];
end
plot(x0 +xy(1,:),480-y0 + xy(2,:),'g');
% 画弧线
function draw_arc(x0,y0,st_a,en_a,r,c_c)
t = (pi/180*st_a:0.01:pi/180*en_a)-pi;
x = x0 + r*cos(t);
y = y0 + r*sin(t);
plot(x,y,c_c);
% 花萼
function plot_rose_e(matr,ch)
x=[];y=[];n=size(matr,1);
for i=1:size(matr,1)
t=(matr(i,3):matr(i,4))*pi/180-pi;
x1=matr(i,1)+matr(i,5)*cos(t);
y1=matr(i,2)+matr(i,6)*sin(t);
if i3
x1=2*matr(i,1)-x1;
end
x1=fliplr(x1);
y1=fliplr(y1);
if n3 i2
x1=fliplr(x1);
y1=fliplr(y1);
end
if ch==4 i==2
x1=fliplr(x1);
y1=fliplr(y1);
end
x=[x,x1];
y=[y,y1];
end
fill(x,y,'g');
% 画树枝
function draw_branch(zhuzhi)
for k=1:size(zhuzhi,1)
t=(zhuzhi(k,3):zhuzhi(k,4))*pi/180-pi;
x1=zhuzhi(k,1)+zhuzhi(k,5)*cos(t);
y1=zhuzhi(k,2)+zhuzhi(k,6)*sin(t);
x1=2*zhuzhi(k,1)-x1;
plot(x1,y1,'g','linewidth',2);
end
相关问答
Q1: 用C语言输出一束鲜花
我以前划过一箭穿心,就是一个箭头,穿过两个心形状的图案。我的办法是用搜狗输入法的特殊表情输入,里面有很多图像,其中应该有你要的鲜花。你按照搜狗的画法,模拟一个网格的区域,然后定义数组,有颜色的个子数组值为1,输出一个符号,没有颜色(空白)的个子,值为0,输出一个空格,下面是搜狗的特殊表情“鲜花”
{@}
{@} * {@}
{@} * {@} * {@}
{@}* {@} * {@} * {@}
\ {@} * {@} * {@} /
\ \ \ l / / /
\\ \ Y / //
\\ l //
\\Y//
=
//*\\
Q2: c语言编写程序 水仙花数 玫瑰花数
1
#include stdio.h
#include stdlib.h
int flower(int n)
{
int i, j, k;
i = n % 10;
j = n / 10 % 10;
k = n / 100;
if (i*i*i + j*j*j + k*k*k == n)
return 1;
else
return 0;
}
int main(void)
{
int i;
for (i = 100; i 1000; i++)
{
if (flower(i) == 1)
printf("%d ", i);
}
return 0;
}
2.
#include stdio.h
#include stdlib.h
int rose(int n)
{
int i, j, k,m;
i = n % 10;
j = n / 10 % 10;
k = n / 100%10;
m = n / 1000;
if (i*i*i*i + j*j*j*j + k*k*k*k+m*m*m*m == n)
return 1;
else
return 0;
}
int main(void)
{
int i;
for (i = 1000; i 10000; i++)
{
if (rose(i) == 1)
printf("%d ", i);
}
return 0;
}
Q3: 用C++编玫瑰花
看了效果自己可以调节#include stdio.h
#include dos.h
#include graphics.h
#include math.h#define FNX(x) (int)(xo+(x)*1.0)
#define FNY(y) (int)(getmaxy()-(yo+(y)*1.0))
#define FNX2(phi) cos(phi)*ac-sin(phi)*bs
#define FNY2(phi) cos(phi)*as+sin(phi)*bc/*画旋转的椭圆*/
void elli(int xo,int yo,int a,int b,double theta)
{
int i;
double da,c,s,ac,as,bc,bs,xf,yf,phi,x,y;
theta=theta*0.01745;
da=3*0.1745;
c=cos(theta);s=sin(theta);
ac=a*c;as=a*s;bc=b*c;bs=b*s;
x=FNX2(0);y=FNY2(0);
moveto(FNX(x),FNY(y));
for(i=1;i=360;i++)
{
phi=i*da;xf=x*cos(phi)*0.1;yf=b*sin(phi)*0.1;
x=FNX2(phi);y=FNY2(phi);
lineto(FNX(x),FNY(y));
}
}/*花*/
void hua(int x,int y)
{
register i;
/*画粉红色玫瑰*/
setcolor(12);
arc(x+65,y-60,150,350,8);
arc(x+66,y-54,300,470,8);
arc(x+65,y-56,30,230,10);
arc(x+64,y-57,300,490,17);
ellipse(x+73,y-30,250,450,27,40);
ellipse(x+59,y-30,100,290,27,40);
ellipse(x+65,y-40,140,270,20,30);
setfillstyle(SOLID_FILL,5);
floodfill(x+65,y-20,12);
/*画红色玫瑰*/
arc(x,y,150,350,12);
arc(x+1,y+8,280,470,12);
arc(x,y+2,30,230,16);
arc(x,y+3,80,240,28);
arc(x+2,y+8,180,330,22);
arc(x-2,y+2,310,460,25);
ellipse(x-12,y+30,120,300,30,40);
ellipse(x+10,y+28,250,423,30,42);
ellipse(x-4,y+10,290,393,30,40);
setfillstyle(SOLID_FILL,4);
floodfill(x+5,y+31,12);
/*画紫色花骨朵*/
ellipse(x+120,y+5,0,360,15,25);
setfillstyle(SOLID_FILL,1);
floodfill(x+120,y,12);
/*画黄色花骨朵*/
ellipse(x-70,y+10,0,360,14,20);
setfillstyle(SOLID_FILL,14);
floodfill(x-70,y+10,12);
setcolor(10);
/*画红花花萼*/
ellipse(x-15,y+32,190,310,30,35);
ellipse(x+16,y+32,235,355,26,35);
ellipse(x,y+35,190,350,43,50);
arc(x,y+82,190,350,6);
setfillstyle(SOLID_FILL,2);
floodfill(x,y+75,10);
/*画粉花花萼*/
ellipse(x+50,y-48,190,320,22,50);
ellipse(x+80,y-48,220,350,22,50);
ellipse(x+65,y-28,180,360,36,50);
floodfill(x+65,y+18,10);
/*画主枝*/
for(i=0;i3;i++)
{
ellipse(x-98,y+100+i,255,371,100,80);
ellipse(x-20,y+30+i,260,358,140,140);
ellipse(x+224,y+20+i,180,218,160,140);
}
/*画侧枝*/
ellipse(x+70,y+34,180,233,140,140);
ellipse(x,y+40,205,255,100,120);
ellipse(x+135,y-30,209,249,72,120);
ellipse(x,y+20,263,301,100,120);
ellipse(x+85,y-10,278,305,100,120);
ellipse(x+100,y-62,282,308,90,120);
ellipse(x-50,y-10,277,314,30,120);
ellipse(x+70,y+80,222,266,52,120);
ellipse(x-60,y-45,229,266,52,120);
ellipse(x+79,y-45,229,266,52,120);
ellipse(x+84,y,224,273,52,120);
ellipse(x+110,y+40,240,282,100,120);
/*画紫花骨朵花萼*/
ellipse(x+120,y-6,200,340,17,25);
ellipse(x+120,y+7,160,380,17,27);
floodfill(x+122,y+30,10);
/*画黄花骨朵花萼*/
ellipse(x-70,y+15,140,390,17,20);
ellipse(x-75,y-10,205,340,10,30);
ellipse(x-60,y-10,195,340,5,30);
floodfill(x-70,y+32,10);
/*画叶*/
/*画右边的叶子*/
elli(x+168,y+282,10,20,-40);
elli(x+160,y+252,8,16,260);
elli(x+145,y+270,8,16,-15);
elli(x+156,y+224,10,20,-45);
elli(x+150,y+200,8,16,270);
elli(x+135,y+220,8,16,-10);
elli(x+146,y+144,8,16,-80);
elli(x+130,y+130,6,12,235);
elli(x+125,y+154,7,14,-10);
elli(x+78,y+98,6,12,-90);
elli(x+60,y+90,5,10,180);
elli(x+70,y+109,5,10,-45);
/*画左边的叶子*/
elli(x-125,y+270,12,24,60);
elli(x-95,y+270,10,20,10);
elli(x-110,y+245,10,20,90);
elli(x-105,y+220,10,20,45);
elli(x-100,y+190,8,16,135);
elli(x-75,y+210,8,16,-45);
/*画中间的叶子*/
elli(x+65,y+190,10,20,-45);
elli(x+40,y+185,8,16,0);
elli(x+55,y+165,8,16,90);
}/*主程序*/
main()
{
int driver=VGA,mode=VGAHI;
initgraph(driver,mode,"C:\TC");
cleardevice();
hua(450,90);
setcolor(10);
rectangle(0,0,639,479);
getch();
closegraph();
}
关于用c语言椭圆函数画玫瑰花和c语言画椭圆程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。




