易码技术论坛

 找回密码
 加入易码
搜索
查看: 114137|回复: 4

帮看看此程序有什么问题

[复制链接]
发表于 2005-1-2 18:34:00 | 显示全部楼层
以下是引用qiqingling在2005-1-2 15:32:15的发言:
源程序如下:
pi=3.1415926;
至少这里有问题:LAVA不支持小数!
发表于 2005-2-13 23:42:00 | 显示全部楼层
LAVA里面用的不是弧度制,所以不用定义pi
还有LAVA三角函数的返回值是真实值乘以1024(范围为-1024~1024)

所以

si=Sin(i*(pi/180);
co=Cos(i*(pi/180);


应该是
si=Sin(i)/1024;
co=Cos(i)/1024;

还有q!<0 要改成 q>=0

发表于 2005-2-14 03:01:00 | 显示全部楼层
楼上说的有些也错了,正确的代码如下:

int b[8]={128,64,32,16,8,4,2,1},ox=80,oy=40,i,du,d,x,y,p,q;

long si[360],co[360];

void main()
{
WriteBlock(0,0,160,80,1,hm);
Refresh();
for (i=0;i<360;++i)
  {si[ i]=Sin(i);
   co[ i]=Cos(i);
  }
for (du=0;du<361;du=du+6)
  {
   d=du%360;
   ClearScreen();
   for (y=0;y<80;++y)
   {
        for (x=0;x<160;++x)
     {
         p=(x-ox)*co[d]/1024-(y-oy)*si[d]/1024+ox;
        if (p>0 && p<160)
        {
         q=(x-ox)*si[d]/1024+(y-oy)*co[d]/1024+oy;
        }
         if(q>=0 && q<80)
         {
             if (hm[q][p/8] & b[p%8])
              Point(x,y,65);               
         }
       }
     }
    Refresh();
   }
   getchar();
}
[此贴子已经被作者于2005-8-9 18:01:36编辑过]

4289_10774_1867.jpg
4289_10774_1868.jpg
发表于 2005-2-14 03:14:00 | 显示全部楼层
速度慢得可怕,在TC1000上运行这个程序每旋转6度要花30秒…
 楼主| 发表于 2005-1-2 15:32:15 | 显示全部楼层 |阅读模式
源程序如下:



char hm[80][20]={



127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,



255,255,255,255,255,255,255,255,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,



0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,



0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,



0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,



96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,



0,0,0,0,0,0,0,3,96,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,3,96,0,0,7,



0,0,0,0,0,0,0,3,128,0,0,192,56,0,0,3,96,0,0,7,0,0,31,255,255,192,0,3,128,0,1,192,



240,0,0,3,96,0,0,7,0,0,31,255,255,224,15,255,255,224,1,193,255,128,0,3,96,0,8,7,0,0,60,0,



1,224,15,159,255,192,49,199,135,192,0,3,96,0,31,255,255,224,28,0,0,224,14,24,24,0,57,220,3,192,0,3,



96,0,63,255,255,224,25,255,252,224,6,28,56,0,61,193,239,0,0,3,96,0,28,7,1,224,25,135,0,224,6,28,



56,0,15,192,60,0,0,3,96,0,28,7,0,224,24,7,0,224,6,254,255,192,1,193,247,0,0,3,96,0,28,7,



0,224,24,103,240,224,7,152,188,0,1,223,135,0,0,3,96,0,28,7,1,224,24,255,248,192,6,60,62,0,1,220,



7,0,0,3,96,0,31,255,255,224,24,7,8,192,14,126,123,0,3,223,255,252,0,3,96,0,31,255,255,224,24,7,



24,192,12,123,123,192,7,255,7,248,0,3,96,0,8,7,0,128,24,135,0,192,28,216,249,240,61,209,135,16,0,3,



96,0,0,7,0,0,25,255,254,192,63,155,184,252,249,193,199,0,0,3,96,0,0,7,0,0,25,128,0,192,121,31,



56,252,225,192,231,0,0,3,96,0,0,7,0,0,28,0,1,192,240,24,56,120,1,192,7,0,0,3,96,0,0,7,



0,0,31,255,255,192,96,24,56,0,1,192,7,0,0,3,96,0,0,7,0,0,31,255,255,192,0,24,56,0,1,195,



159,0,0,3,96,0,0,15,0,0,12,0,1,192,0,24,56,0,0,193,254,0,0,3,96,0,0,6,0,0,0,0,



0,0,0,0,24,0,0,128,56,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,



96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,



0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,3,96,0,0,0,



0,0,0,0,0,0,0,64,0,0,1,0,0,0,0,3,96,0,0,0,0,0,0,0,0,1,7,176,0,48,3,0,



0,0,0,3,96,0,0,0,0,0,0,0,0,0,255,204,0,28,3,128,0,0,0,3,96,0,0,0,0,0,0,0,



0,0,0,54,0,15,243,192,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,25,0,3,249,240,0,0,0,3,



96,0,0,0,0,0,0,0,0,0,1,253,0,0,253,240,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,3,



0,128,62,248,8,0,0,3,96,0,0,0,0,0,0,1,30,0,0,3,128,224,58,248,8,0,0,3,96,0,0,0,



0,0,0,0,121,128,0,1,128,125,132,16,18,0,0,3,96,0,0,0,0,0,0,0,12,192,0,0,192,15,198,16,



30,0,0,3,96,0,0,0,0,0,0,0,0,96,0,0,126,0,39,246,62,0,0,3,96,0,0,0,0,0,0,0,



1,240,0,0,63,223,111,106,63,0,0,3,96,0,0,0,0,63,0,1,7,248,3,0,9,255,120,20,255,0,0,3,



96,0,0,0,1,254,128,2,0,120,25,224,4,103,254,39,238,0,0,3,96,0,0,0,0,6,248,3,0,25,254,248,



1,255,254,5,224,0,0,3,96,0,0,0,0,3,254,1,0,1,255,195,3,248,206,79,64,0,0,3,96,0,0,0,



248,1,255,249,204,3,255,248,151,224,243,238,71,0,8,3,96,50,0,3,254,0,63,254,248,55,255,255,15,192,125,252,



252,0,24,3,96,51,0,7,255,0,62,0,192,207,255,255,159,192,121,181,140,0,50,3,97,38,0,27,254,192,30,7,



192,31,255,255,231,128,48,143,254,0,183,3,99,172,0,63,255,224,7,12,56,63,255,255,243,192,31,242,30,1,156,3,



96,248,0,124,7,241,7,128,152,63,252,255,251,224,15,228,30,3,249,3,96,123,231,240,3,247,255,128,192,63,224,15,



249,240,1,8,124,0,255,3,96,127,255,240,1,255,255,128,64,63,195,135,249,248,0,0,0,0,92,3,99,248,1,152,



3,254,31,0,0,63,143,227,252,127,192,0,0,0,24,3,98,28,1,220,7,255,152,0,0,63,31,224,254,63,252,0,



0,1,144,3,96,4,0,254,15,255,224,0,0,190,63,248,127,159,255,128,0,7,48,3,96,6,0,39,15,255,248,0,



3,60,0,124,63,199,255,192,0,28,96,3,96,0,0,0,143,199,255,0,15,56,0,63,31,225,255,224,0,112,192,3,



96,0,0,0,15,1,255,255,255,112,0,51,223,252,127,250,1,192,64,3,96,0,0,0,15,64,127,255,254,64,0,49,



255,254,31,255,255,0,0,3,96,0,127,192,14,2,127,255,254,128,0,48,63,255,159,255,254,0,0,3,96,0,31,240,



14,0,31,255,254,0,0,48,63,255,255,255,229,0,0,3,96,0,14,12,28,0,6,255,254,0,0,240,31,255,255,240,



5,0,0,3,96,7,195,255,252,0,0,31,252,0,0,89,143,255,255,240,15,0,0,3,97,255,199,255,248,0,0,5,240,0,0,91,128,207,255,224,24,0,0,3,96,15,239,3,252,0,0,15,0,0,0,102,0,7,255,192,0,0,0,3



,96,3,240,179,152,0,0,1,192,0,0,44,192,0,255,128,0,0,0,3,96,0,127,158,0,0,0,1,0,0,0,30,



64,0,0,0,0,0,0,3,96,0,0,16,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,96,0,0,0,



0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,25,128,0,0,0,



0,0,0,3,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,255,255,255,255,255,255,255,



255,255,255,255,255,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};



int b[8]={128,64,32,16,8,4,2,1},ox=80,oy=40,i,du,d,x,y,p,q;



long si[360],co[360],pi=3.1415926;



void main()



{



for (i=0;i<360;++i)



  {si=Sin(i*(pi/180);



   co=Cos(i*(pi/180);



  }



for (du=0;du<361;du=du+6)



  {d=du%360;



   ClearScreen();



   for (y=0;y<80;++y)



     {for (x=0;x<160;++x)



        {p=(x-ox)*co[d]-(y-oy)*si[d]+ox;



         if (p>0 && p<160)



           {q=(x-ox)*si[d]+(y-oy)*co[d]+oy;



         if (q!<0 && q<80)



           {if (hm[q][p/8] & b[p%8])



                 {Point(x,y,65);



                 }



               }



           }



         }



      }



    WriteBlock(0,0,160,80,1,hm);



    Refresh();



   }



}


怎么也通不过编译,目的是想编一个让图形在屏幕上顺时针转的程序,



从verybasic中带的一个程序改过来的,却怎么也不成功.



谁有更好的方法,请教教我
[此贴子已经被作者于2005-1-2 15:40:09编辑过]

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-5 04:17 , Processed in 0.012662 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表