编程论坛's Archiver

ChenMo 发表于 2006-5-26 11:12

下载图形库 —— 欢迎在本版发布您的图形程序

<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]

一笔苍穹 发表于 2006-5-27 17:28

欢迎大家在这个版块讨论图形编程遇到的问题和心得。<br>
<br>

并希望能多多发布自己的作品,可以包括普通图形程序、游戏、编程技巧、学习心得甚至是原创的游戏人物/场景图片或游戏音乐等各种相关资源。<br>

在这里没有规定的开发环境和游戏库,你习惯用什么都可以,水平也没有限制,唯一需要注意的是最好是C语言作品,C++也适当可以,其它语言的请发到与其相关的版块。<br>
<br>

另外,由于这是图形编程版,你可能会经常看到一些有意思的帖子:比如一个好玩的小游戏等诸如此类的,我希望你能在享用后能够回个帖,这样是对他人劳动的基本尊重。<br>
<br>

最后,祝你愉快!
[align=right][color=#000066][此贴子已经被作者于2006-5-27 17:35:56编辑过][/color][/align]

c4nk001 发表于 2006-5-29 23:25

<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   &lt;stdio.h&gt;<BR>  #include   &lt;alloc.h&gt;<BR>  #include   &lt;string.h&gt;<BR>  #include   &lt;stdlib.h&gt;<BR>  #include   &lt;math.h&gt;<BR>  #include   &lt;graphics.h&gt;</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(&amp;driver,&amp;mode,"c:\\tc");<BR>  cleardevice();<BR>  printf("NP,NF,FP=?");<BR>  scanf("%d,%d,%d",&amp;NP,&amp;NF,&amp;FP);<BR>  P   =malloc(NP*sizeof(float *));<BR>  for(i=0;i&lt;NP;i++)<BR>    *(P+i)=malloc(3*sizeof(float));<BR>  PT=malloc(NF*sizeof(float *));<BR>  for(i=0;i&lt;NF;i++)<BR>    *(PT+i)=malloc(3*sizeof(float));<BR>  F   =malloc(NF*sizeof(int *));<BR>  for(i=0;i&lt;NF;i++)<BR>    *(F+i)=malloc((FP+1)*sizeof(float));<BR>  printf("build list of point\n");<BR>  for(i=0;i&lt;NP;i++)<BR>  {<BR>   for(j=0;j&lt;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&lt;NF;i++)<BR>  {<BR>   for(j=0;j&lt;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&gt;0   &amp;&amp;   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 &amp;*/<BR>  if(strcmp(str,"NO")   ==   0)<BR>   goto   AXONOMART;<BR>  printf("X0,Y0=?");<BR>  scanf("%f,%f",&amp;X0,&amp;Y0);<BR>  printf("the front view:\n");<BR>  T[0][0]=1;T[1][1]=1;<BR>  printf("L=?");scanf("%f",&amp;L);<BR>  printf("M=?");scanf("%f",&amp;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",&amp;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",&amp;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",&amp;X0,&amp;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",&amp;X0,&amp;Y0);<BR>  printf("L1,L2,L3=");<BR>  scanf("%f,%f,%f",&amp;L1,&amp;L2,&amp;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",&amp;X0,&amp;Y0);<BR>  printf("JJ=3,HI=1700,R=1/K\n");<BR>  printf("JJ,HI,R=?");<BR>  scanf("%f,%f,%f",&amp;JJ,&amp;HI,&amp;R);<BR>  ROTATEMATRIX();<BR>  /*MATRIX   MULTIPLIY*/<BR>  MatrixMultiply();<BR>  /*DETERMINE   VISIBILITY;*/<BR>  REQUIRE();<BR>  for(i=0;i&lt;NP;i++)<BR>   {<BR>    PT[i][2]=PT[i][2]-MAX;<BR>    PT[i][1]=PT[i][1]-HI;<BR>    for(j=0;j&lt;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&lt;NP;i++)<BR>    {free(P+i);<BR>     free(PT+i);<BR>    }<BR>  free(P);<BR>  free(PT);<BR>  for(i=0;i&lt;NF;i++)<BR>    free(F+i);<BR>  free(F);  <BR>  }</P>
<P>  void   MatrixMultiply()<BR>  {<BR>  for(i=0;i&lt;NP;i++)<BR>  {<BR>  for(j=0;j&lt;3;j++)<BR>  {<BR>  PT[i][j]=0;<BR>  for(k=0;k&lt;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&lt;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&gt;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&lt;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&gt;0   &amp;&amp;   D==P1) break;<BR>  }<BR>  }</P>
<P>  void   ClearMatrix()<BR>  {<BR>  for(JJ=0;JJ&lt;3;JJ++)<BR>   for(KK=0;KK&lt;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",&amp;FE,&amp;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",&amp;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&lt;NP;i++)<BR>   {<BR>     if(PT[i][JJ-1]&gt;MAX) MAX=PT[i][JJ-1];<BR>     if(PT[i][JJ-1]&lt;MUN) MUN=PT[i][JJ-1];<BR>   }<BR>  }<BR>  </P></DIV>

lwlmmb 发表于 2006-10-7 01:12

             太高兴了,找了好久,才找到这样的论坛,希望大家一起学习[em04]

xianlin_lea 发表于 2006-10-8 20:56

<P>希望大家能够上传一些关于C语言图形学的入门知识!<BR><BR>小弟先行谢过了!<BR>[em01]</P>

清澂居士 发表于 2007-1-8 12:20

一直想學````

leadfuture 发表于 2007-1-23 23:44

原来c的图象功能也可以如此强大

BEINGJESSE 发表于 2007-5-18 17:13

i'm a novice! up<br>

danielliujp 发表于 2007-6-9 23:11

顶!!

非常后街 发表于 2007-6-17 13:08

<P>顶了 ,</P>

anlogo 发表于 2007-7-23 15:35

顶起

guanzinmg 发表于 2008-4-7 11:42

谢了,顶

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.