おい、そこのお前! どうか私のソースを見て下さい
■ このスレッドは過去ログ倉庫に格納されています
0106wkitty.c(2)
NGNGconst double PI=3.14159;static int dx=DX,dy=DY,d=0;int i,j,k,x1,x2,y1,y2;
enum ot{LI,EL};struct{enum ot t;double z;int n;}s[15],u;
double rd,sr,cr,xc,xw,wc,ds,th;HDC hDC;HBRUSH hBOld,hB[9];HPEN hPenOld;PAINTSTRUCT ps;
hDC=BeginPaint(hWnd, &ps);hPenOld=(HPEN)SelectObject(hDC,GetStockObject(BLACK_PEN));
hBOld=(HBRUSH)SelectObject(hDC,GetStockObject(WHITE_BRUSH));
rd=2*PI*d/360;sr=sin(rd);cr=cos(rd);
xx+=dx;if(xx<=SIZEX/2){dx=DX;xx=SIZEX/2;}if(xx>=wx-SIZEX/2){dx=-DX;xx=wx-SIZEX/2;}
yy+=dy;if(yy<=UPY){dy=DY;yy=UPY;}if(yy>=wy-LOY){dy=-DY;yy=wy-LOY;}
for(i=0;i<EN;++i){s[i].t=EL;s[i].n=i;s[i].z=el[i].x*sr+el[i].z*cr;}
for(i=EN;i<EN+LN;++i){j=i-EN;s[i].t=LI;s[i].n=j;s[i].z=(li[j].x1*sr+li[j].z1*cr+li[j].x2*sr+li[j].z2*cr)/2;}
k=EN+LN-1;while(k>=0){j=-1;for(i=1;i<=k;i++){if(s[i-1].z>s[i].z){j=i-1;u.t=s[j].t;s[j].t=s[i].t;
s[i].t=u.t;u.z=s[j].z;s[j].z=s[i].z;s[i].z=u.z;u.n=s[j].n;s[j].n=s[i].n;s[i].n=u.n;}}k=j;}
for(i=0;i<EN+LN;++i){switch(s[i].t){
case EL:hB[s[i].n]=CreateSolidBrush(RGB(el[s[i].n].r,el[s[i].n].g,el[s[i].n].b));
SelectObject(hDC,hB[s[i].n]);xc=cr*el[s[i].n].x-sr*el[s[i].n].z;th=atan(-el[s[i].n].d*sr/el[s[i].n].w/cr);
wc=cos(th)*el[s[i].n].w/2;ds=sin(th)*el[s[i].n].d/2;xw=sqrt(wc*wc+ds*ds);
x1=xc-xw+xx;x2=xc+xw+xx;y1=yy-el[s[i].n].y-el[s[i].n].h/2;y2=yy-el[s[i].n].y+el[s[i].n].h/2;
Ellipse(hDC,x1,y1,x2,y2);break;
case LI:x1=cr*li[s[i].n].x1-sr*li[s[i].n].z1+xx;x2=cr*li[s[i].n].x2-sr*li[s[i].n].z2+xx;
y1=yy-li[s[i].n].y1;y2=yy-li[s[i].n].y2;MoveToEx(hDC,x1,y1,NULL);LineTo(hDC,x2,y2);break;}}
SelectObject(hDC,hBOld);SelectObject(hDC,hPenOld);
for(i=0;i<EN;++i)DeleteObject(hB[i]);EndPaint(hWnd,&ps);++d;if(d>=360)d=0;return 0L;}
■ このスレッドは過去ログ倉庫に格納されています