下载图形库 —— 欢迎在本版发布您的图形程序
<P><STRONG><FONT color=#0033ff>下载图形库</FONT></STRONG></P><P>对于DOS图形编程,图形库是必须的,<br>我们经常使用的是系统自带的图形库,如 Turbo C 2 的 Graphics 库。<br>或许使用系统的 Graphics 有点使您不大高兴的是,<br>您必须将图形库驱动程序包在您的程序目录下一起发布,那怕您的可能非常小;<br>更好一点的做法是将图形驱动转为 OBJ 然后将其链接进您的程序,这样可能依然有不少地方令您不满意——如本地中文显示等。</P>
<P>我们需要更为强大的图形库满足需要并弥补Graphics不足,以下介绍推荐的几种开源的图形库以方面参考及提高(以后会继续添加更多好作品),并提供了下载页面链接:</P>
<P>------------------------------------------------------------------<br>NEO SDK<br>------------------------------------------------------------------<br>作者: 一笔苍穹<br>版本: 2.1.90<br>下载页面: <a href="http://www.bc-cn.net/Soft/kfyy/c/200605/302.html" target="_blank" >http://www.bc-cn.net/Soft/kfyy/c/200605/302.html</A><br>------------------------------------------------------------------</P>
<P><br>------------------------------------------------------------------<br>TC 256<br>------------------------------------------------------------------<br>作者:吴进 Cattom<br>版本:2.35<br>下载页面: <a href="http://www.8623.com/" target="_blank" >http://www.8623.com/</A><br>------------------------------------------------------------------</P>
<P><STRONG><FONT color=#0033ff>发布您的图形程序</FONT></STRONG><br><br>偶有灵感,或许一个新奇好玩的游戏便从您的手中诞生了。<br>值得高兴的事情不可独享,发布到此贴(哪怕是一个小小的程序)将使得更多人分享这些快乐。<br><br><br><br><STRONG><FONT color=#0033ff>发布您的图形库</FONT></STRONG></P>
<P>对于个人原创的或修改自他人的图形库,都一并欢迎在本版发布,发布修改自他人的图形库时,请先征求原作者同意,并在包的介绍中声明为他人图形库的修改(或增强)版。</P>
<P>发布图形库时(图形库请务必是免费开源的),请先为图形库编写帮助文档,并且建议提供例程。<br>将图形库打包后,发送到以下邮箱(同时提供该包官方下载页面):<br> <a href="mailto:bccngrappack@21cn.com" target="_blank" >bccngrappack@21cn.com</A></P>
<P>我们可能会对图形包作一些检测(为保证质量,但不对作品修改任一字符),然后再为您的图形库加入本帖,<br>请自行确保所发送的图形包已进行过病毒扫描并且是无毒的。</P>
<P>若官方网无足够的空间以提供下载,请在邮件内注明,BC-CN 将为您提供下载。</P>
<P>在发布已在本贴的图形库的更新版本时,<br>请将更新的图形库发送到以下邮箱,<br> <a href="mailto:bccngrappackupdate@21cn.com" target="_blank" >bccngrappackupdate@21cn.com</A></P>
<P>将不再检测,而是直接更新到本帖,也是按照同样的方法。</P>
<P>发布作品时请在邮件中写明:<br>图形库名称:<br>当前版本:<br>版本更新日期:<br>作者:<br>联系方式:<br>图形库简介:<br>下载页面:(若无,BC-CN 将为您提供下载)</P>
<P><br>最后,感谢大家的支持!</P>
[align=right][color=#000066][此贴子已经被作者于2006-5-28 17:08:30编辑过][/color][/align]
欢迎大家在这个版块讨论图形编程遇到的问题和心得。<br>
<br>
并希望能多多发布自己的作品,可以包括普通图形程序、游戏、编程技巧、学习心得甚至是原创的游戏人物/场景图片或游戏音乐等各种相关资源。<br>
在这里没有规定的开发环境和游戏库,你习惯用什么都可以,水平也没有限制,唯一需要注意的是最好是C语言作品,C++也适当可以,其它语言的请发到与其相关的版块。<br>
<br>
另外,由于这是图形编程版,你可能会经常看到一些有意思的帖子:比如一个好玩的小游戏等诸如此类的,我希望你能在享用后能够回个帖,这样是对他人劳动的基本尊重。<br>
<br>
最后,祝你愉快!
[align=right][color=#000066][此贴子已经被作者于2006-5-27 17:35:56编辑过][/color][/align]
<DIV 0px; LINE-HEIGHT: 22px; PADDING-TOP: 5px; HEIGHT: 22px"><B>百思不解的问题</B></DIV>
<DIV>
<P>请大家看看我遍的一个显示3视图的程序为什么不能显示试图呢??另外每次编译后,以后运行时常常会出现俯视图(就是"the top view "下面一直到“the profile view:"这部分)输出结果为(6,9,5,1,2,6)这样的错误结果而不是正确结果:(5,9,10,8,5)大家帮帮忙啊,谢谢</P>
<P>有图<BR><BR>/*该程序中的NZ方向与初始化的数据集中的面表有关系,也既与面中的点的排列顺序有关系*/<BR> #include <stdio.h><BR> #include <alloc.h><BR> #include <string.h><BR> #include <stdlib.h><BR> #include <math.h><BR> #include <graphics.h></P>
<P> static float data[]={0,0,0, 0,0,20, 40,0,20, 40,0,0,<BR> 0,30,0, 0,30,20, 40,30,20, 40,30,0,<BR> 0,40,10, 40,40,10,<BR> 4,3,2,1,4, 6,9,5,1,2,6, 2,3,7,6,2,<BR> 3,4,8,10,7,3, 4,1,5,8,4, 5,9,10,8,5,<BR> 6,7,10,9,6};<BR> static int data_idx=0;</P>
<P><BR> void ClearMatrix();<BR> void MatrixMultiply();<BR> void DetermineVisibility();<BR> void DrawOneSurface();<BR> void MatrixROTATE();<BR> void ROTATEMATRIX();<BR> void REQUIRE();</P>
<P> int NP,NF,FP;<BR> float **P,**PT,**F;<BR> float T[3][3]={{0,0,0},{0,0,0},{0,0,0}};<BR> float D;<BR> int i,j,k;<BR> float JJ,KK,HI,R;<BR> char str[10];<BR> float X0,Y0;<BR> float M,L;<BR> float L1,L2,L3;<BR> float MAX,MUN;<BR> float P1,P2,P3;<BR> void main()<BR> {<BR> int driver,mode;<BR> driver=DETECT;<BR> registerbgidriver(EGAVGA_driver);<BR> initgraph(&driver,&mode,"c:\\tc");<BR> cleardevice();<BR> printf("NP,NF,FP=?");<BR> scanf("%d,%d,%d",&NP,&NF,&FP);<BR> P =malloc(NP*sizeof(float *));<BR> for(i=0;i<NP;i++)<BR> *(P+i)=malloc(3*sizeof(float));<BR> PT=malloc(NF*sizeof(float *));<BR> for(i=0;i<NF;i++)<BR> *(PT+i)=malloc(3*sizeof(float));<BR> F =malloc(NF*sizeof(int *));<BR> for(i=0;i<NF;i++)<BR> *(F+i)=malloc((FP+1)*sizeof(float));<BR> printf("build list of point\n");<BR> for(i=0;i<NP;i++)<BR> {<BR> for(j=0;j<3;j++,data_idx++)<BR> {<BR> P[i][j] =data[data_idx];<BR> printf("%f\t",P[i][j]);<BR> }<BR> printf("\n");<BR> }<BR> printf("\n");<BR> printf("build list of surface\n");<BR> for(i=0;i<NF;i++)<BR> {<BR> for(j=0;j<FP+1;j++,data_idx++)<BR> {<BR> F[i][j]=data[data_idx];<BR> printf("%f\t",F[i][j]);<BR> if(j==0)<BR> D=F[i][j];<BR> if(j>0 && F[i][j] == D)<BR> {data_idx++;<BR> printf("\n");<BR> break;<BR> }<BR> }<BR> printf("\n");<BR> }<BR> printf("\n");</P>
<P> printf("Do You Want Three-Views?");<BR> scanf("%s",str); /*needn't the &*/<BR> if(strcmp(str,"NO") == 0)<BR> goto AXONOMART;<BR> printf("X0,Y0=?");<BR> scanf("%f,%f",&X0,&Y0);<BR> printf("the front view:\n");<BR> T[0][0]=1;T[1][1]=1;<BR> printf("L=?");scanf("%f",&L);<BR> printf("M=?");scanf("%f",&M);<BR> /*MATRIX MULTIPLIY*/<BR> MatrixMultiply();<BR> /*DETERMINE VISIBILITY;*/<BR> DetermineVisibility();<BR> ClearMatrix();<BR> printf("\n");<BR> printf("the top view:\n");<BR> T[0][0]=1;T[2][1]=-1;<BR> printf("M=?");scanf("%f",&M);<BR> /*MATRIX MULTIPLIY*/<BR> MatrixMultiply();<BR> /*DETERMINE VISIBILITY;*/<BR> DetermineVisibility();<BR> ClearMatrix();<BR> printf("\n");<BR> printf("the profile view:\n");<BR> T[1][1]=1;T[2][0]=1;<BR> printf("L=?");<BR> scanf("%f",&L);<BR> MatrixMultiply();<BR> DetermineVisibility();<BR> ClearMatrix();<BR> printf("\n");<BR> AXONOMART:<BR> printf("Do You Want AxNoMatr View?");<BR> scanf("%s",str);<BR> if(strcmp(str,"NO")==0)<BR> goto OBLIQUE;<BR> printf("X0,Y0=?");<BR> scanf("%f,%f",&X0,&Y0);<BR> /*MATRIX MULTIPLIY*/<BR> MatrixROTATE();<BR> /*DETERMINE VISIBILITY;*/<BR> DetermineVisibility();<BR> ClearMatrix();<BR> printf("\n");<BR> OBLIQUE:<BR> printf("Do You Want OBLIQUE View?");<BR> scanf("%s",str);<BR> if(strcmp(str,"NO")==0)<BR> goto PERSPECTIVE;<BR> printf("X0,Y0=?");<BR> scanf("%f,%f",&X0,&Y0);<BR> printf("L1,L2,L3=");<BR> scanf("%f,%f,%f",&L1,&L2,&L3);<BR> /*MATRIX MULTIPLIY*/<BR> T[0][0]=1;T[1][1]=1;T[2][0]=-L1/L3;T[2][1]=-L2/L3;<BR> MatrixROTATE();<BR> /*DETERMINE VISIBILITY;*/<BR> DetermineVisibility();<BR> ClearMatrix();<BR> PERSPECTIVE:<BR> printf("\n");<BR> printf("DO YOU WANT PERSPECTIVE VIEW?");<BR> scanf("%s",str);<BR> if(strcmp(str,"NO")==0)<BR> exit(0);<BR> printf("X0,Y0=?");<BR> scanf("%f,%f",&X0,&Y0);<BR> printf("JJ=3,HI=1700,R=1/K\n");<BR> printf("JJ,HI,R=?");<BR> scanf("%f,%f,%f",&JJ,&HI,&R);<BR> ROTATEMATRIX();<BR> /*MATRIX MULTIPLIY*/<BR> MatrixMultiply();<BR> /*DETERMINE VISIBILITY;*/<BR> REQUIRE();<BR> for(i=0;i<NP;i++)<BR> {<BR> PT[i][2]=PT[i][2]-MAX;<BR> PT[i][1]=PT[i][1]-HI;<BR> for(j=0;j<3;j++)<BR> PT[i][j]=PT[i][j]/(1+R*PT[i][2]);<BR> }<BR> DetermineVisibility();<BR> /*DRAWING ONE SURFACE*/<BR> getch();<BR> closegraph();<BR> for(i=0;i<NP;i++)<BR> {free(P+i);<BR> free(PT+i);<BR> }<BR> free(P);<BR> free(PT);<BR> for(i=0;i<NF;i++)<BR> free(F+i);<BR> free(F); <BR> }</P>
<P> void MatrixMultiply()<BR> {<BR> for(i=0;i<NP;i++)<BR> {<BR> for(j=0;j<3;j++)<BR> {<BR> PT[i][j]=0;<BR> for(k=0;k<3;k++)<BR> PT[i][j]=PT[i][j]+P[i][k]*T[k][j]; <BR> }<BR> <BR> PT[i][0]=PT[i][0]+L;<BR> PT[i][1]=PT[i][1]+M;<BR> }<BR> }<BR> </P>
<P> void DetermineVisibility()<BR> {<BR> float XA,XB,YA,YB,NZ;<BR> for(KK=0;KK<NF;KK++)<BR> {<BR> P1=F[KK][0];<BR> P2=F[KK][1];<BR> P3=F[KK][2];<BR> XA=PT[P2-1][0]-PT[P1-1][0];<BR> YA=PT[P2-1][1]-PT[P1-1][1];<BR> XB=PT[P3-1][0]-PT[P1-1][0];<BR> YB=PT[P3-1][1]-PT[P1-1][1];<BR> NZ=XA*YB-XB*YA;<BR> printf("NZ=%f\n",NZ);<BR> if(NZ>0.001) DrawOneSurface();<BR> }<BR> }<BR> </P>
<P> void DrawOneSurface()<BR> {<BR> float x,x1,y,y1;<BR> x1=PT[P1-1][0];y1=PT[P1-1][1];<BR> for(JJ=0;JJ<FP+1;JJ++)<BR> {<BR> D=F[KK][JJ];<BR> printf("D=%f\n",D);<BR> x=PT[D-1][0]+X0;<BR> printf("x=%f\t",x);<BR> y=-PT[D-1][1]+Y0;<BR> printf("y=%f\t",y);<BR> if(JJ==0) moveto(x1,y1);<BR> else line(x1,y1,x,y);<BR> x1=x; y1=y;<BR> if(JJ>0 && D==P1) break;<BR> }<BR> }</P>
<P> void ClearMatrix()<BR> {<BR> for(JJ=0;JJ<3;JJ++)<BR> for(KK=0;KK<3;KK++)<BR> T[JJ][KK]=0;<BR> }</P>
<P> void MatrixROTATE()<BR> {<BR> float FE,CE,FT,CT;<BR> printf("FE,CE=");<BR> scanf("%f,%f",&FE,&CE);<BR> FT=FE*3.14159/180;<BR> CT=CE*3.14159/180;<BR> T[0][0]=cos(FT);T[1][1]=cos(CT);<BR> T[2][0]=sin(FT);T[0][1]=sin(CT);<BR> T[2][1]=-T[0][0]*T[0][1];<BR> T[0][1]= T[2][0]*T[0][1];<BR> }<BR><BR> void ROTATEMATRIX()<BR> {<BR> float FT,FE;<BR> printf("FE=");<BR> scanf("%f",&FE);<BR> FT=(FE*3.14159)/180;<BR> T[0][0]=cos(FT);T[2][2]=T[0][0];<BR> T[2][0]=sin(FT);T[0][2]=-T[2][0];<BR> T[1][1]=1;<BR> }<BR> <BR> void REQUIRE()<BR> {<BR> MAX=PT[0][JJ-1];<BR> MUN=MAX;<BR> for(i=0;i<NP;i++)<BR> {<BR> if(PT[i][JJ-1]>MAX) MAX=PT[i][JJ-1];<BR> if(PT[i][JJ-1]<MUN) MUN=PT[i][JJ-1];<BR> }<BR> }<BR> </P></DIV> 太高兴了,找了好久,才找到这样的论坛,希望大家一起学习[em04] <P>希望大家能够上传一些关于C语言图形学的入门知识!<BR><BR>小弟先行谢过了!<BR>[em01]</P> 一直想學```` 原来c的图象功能也可以如此强大 i'm a novice! up<br> 顶!! <P>顶了 ,</P> 顶起 谢了,顶
页:
[1]
