導航:首頁 > 編程語言 > 3d玫瑰的編程

3d玫瑰的編程

發布時間:2023-12-23 20:50:03

❶ VC6製作玫瑰花

僅供參考:

1、你那個把幾個數值和畫筆類型改一下就能滿足要求

2、給你一個完善的demo參考下

////////////////////////////////////////////////////////////////////
//程序名稱:一朵逼真的玫瑰花
//編譯環境:VC6.0,EasyX2011驚蟄版
//作者:孫琨
//編寫地點:XUST
//編寫時間:2013年11月11日
//編寫目的:贈給未來可能看到的你

#include<graphics.h>
#include<conio.h>
#include<math.h>

//定義全局變數
introsesize=500;
inth=-250;

//定義結構體
structDOT
{
doublex;
doubley;
doublez;
doublered;//紅色
doublegreen;//綠色
//blue(藍色)通過red計算
};

//計算點
boolcalc(doublea,doubleb,doublec,DOT&d)
{
doublej,n,o,w,z;

if(c>60)//花柄
{
d.x=sin(a*7)*(13+5/(0.2+pow(b*4,4)))-sin(b)*50;
d.y=b*rosesize+50;
d.z=625+cos(a*7)*(13+5/(0.2+pow(b*4,4)))+b*400;
d.red=a*1-b/2;
d.green=a;
returntrue;
}

doubleA=a*2-1;
doubleB=b*2-1;
if(A*A+B*B<1)
{
if(c>37)//葉
{
j=(int(c)&1);
n=j?6:4;
o=0.5/(a+0.01)+cos(b*125)*3-a*300;
w=b*h;

d.x=o*cos(n)+w*sin(n)+j*610-390;
d.y=o*sin(n)-w*cos(n)+550-j*350;
d.z=1180+cos(B+A)*99-j*300;
d.red=0.4-a*0.1+pow(1-B*B,-h*6)*0.15-a*b*0.4+cos(a+b)/5+pow(cos((o*(a+1)+(B>0?w:-w))/25),30)*0.1*(1-B*B);
d.green=o/1000+0.7-o*w*0.000003;
returntrue;
}
if(c>32)//花萼
{
c=c*1.16-0.15;
o=a*45-20;
w=b*b*h;
z=o*sin(c)+w*cos(c)+620;

d.x=o*cos(c)-w*sin(c);
d.y=28+cos(B*0.5)*99-b*b*b*60-z/2-h;
d.z=z;
d.red=(b*b*0.3+pow((1-(A*A)),7)*0.15+0.3)*b;
d.green=b*0.7;
returntrue;
}

//花
o=A*(2-b)*(80-c*2);
w=99-cos(A)*120-cos(b)*(-h-c*4.9)+cos(pow(1-b,7))*50+c*2;
z=o*sin(c)+w*cos(c)+700;

d.x=o*cos(c)-w*sin(c);
d.y=B*99-cos(pow(b,7))*50-c/3-z/1.35+450;
d.z=z;
d.red=(1-b/1.2)*0.9+a*0.1;
d.green=pow((1-b),20)/4+0.05;
returntrue;
}

returnfalse;
}


//主函數
voidmain()
{
//定義變數
short*zBuffer;
intx,y,z,zBufferIndex;
DOTdot;

//初始化
initgraph(640,480);//創建繪圖窗口
setbkcolor(WHITE);//設置背景色為白色
cleardevice();//清屏

//初始化z-buffer
zBuffer=newshort[rosesize*rosesize];
memset(zBuffer,0,sizeof(short)*rosesize*rosesize);

for(intj=0;j<2000&&!_kbhit();j++)//按任意鍵退出
{
for(inti=0;i<10000;i++)//減少是否有按鍵的判斷
if(calc(double(rand())/RAND_MAX,double(rand())/RAND_MAX,rand()%46/0.74,dot))
{
z=int(dot.z+0.5);
x=int(dot.x*rosesize/z-h+0.5);
y=int(dot.y*rosesize/z-h+0.5);
if(y>=rosesize)continue;

zBufferIndex=y*rosesize+x;

if(!zBuffer[zBufferIndex]||zBuffer[zBufferIndex]>z)
{
zBuffer[zBufferIndex]=z;

//畫點
intred=~int((dot.red*h));
if(red<0)
red=0;
if(red>255)
red=255;

intgreen=~int((dot.green*h));
if(green<0)
green=0;
if(green>255)
green=255;

intblue=~int((dot.red*dot.red*-80));
if(blue<0)
blue=0;
if(blue>255)
blue=255;

putpixel(x+50,y-20,RGB(red,green,blue));
}
}

Sleep(1);
}

//退出
delete[]zBuffer;
getch();
closegraph();
}
閱讀全文

與3d玫瑰的編程相關的資料

熱點內容
c4d動態解壓 瀏覽:709
多個pdf合並為一個 瀏覽:312
程序中的編譯執行 瀏覽:30
plc控制與單片機控制 瀏覽:884
如何讓安卓手機操控電腦 瀏覽:187
電腦電銷加密電話號碼破解 瀏覽:505
世界史綱pdf 瀏覽:133
湖北社保年審app叫什麼名字 瀏覽:852
邁達克雲伺服器 瀏覽:597
mfc深入淺出從mfc設計到mfc編程 瀏覽:81
螢石雲伺服器連接設置 瀏覽:325
中國名著pdf 瀏覽:592
華為伺服器設備序列號怎麼看 瀏覽:319
跑永輝生活配送用什麼app 瀏覽:149
ug識別符號命令在哪裡 瀏覽:719
pdf文件改文字 瀏覽:734
查詢qq號劍靈伺服器地址 瀏覽:553
國家反詐中心app為什麼要刷臉 瀏覽:304
iphone怎麼修改dns伺服器地址 瀏覽:87
bandizip解壓位置 瀏覽:170