📄 ddex1.cpp
字号:
trgl.p1=2 , trgl.p2=5 , trgl.p3=1 ;
face1.addTriangle(&trgl);*/
trgl.p1=11 , trgl.p2=9 , trgl.p3=8 ,trgl.maped=TRUE,trgl.map=0;
trgl.u1=(float)0.98,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=11 , trgl.p2=10 , trgl.p3=9 ,trgl.maped=TRUE,trgl.map=0;
trgl.u1=(float)0.98,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.98,trgl.u3=(float)0.02,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=11 , trgl.p2=8 , trgl.p3=12 ,trgl.maped=TRUE,trgl.map=1;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=15 , trgl.p2=11 , trgl.p3=12 ,trgl.maped=TRUE,trgl.map=1;
trgl.u1=(float)0.98,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.98,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=8 , trgl.p2=13 , trgl.p3=12 ,trgl.maped=TRUE,trgl.map=2;
trgl.u1=(float)0.98,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=8 , trgl.p2=9 , trgl.p3=13 ,trgl.maped=TRUE,trgl.map=2;
trgl.u1=(float)0.98,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.98,trgl.u3=(float)0.02,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=11 , trgl.p2=15 , trgl.p3=14,trgl.maped=TRUE,trgl.map=2 ;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=11 , trgl.p2=14 , trgl.p3=10 ,trgl.maped=TRUE,trgl.map=2;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.98,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.98;
face1.addTriangle(&trgl);
trgl.p1=15 , trgl.p2=12 , trgl.p3=14 ,trgl.maped=TRUE,trgl.map=0;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.98;
face1.addTriangle(&trgl);
trgl.p1=12 , trgl.p2=13 , trgl.p3=14 ,trgl.maped=TRUE,trgl.map=0;
trgl.u1=(float)0.02,trgl.v1=(float)0.02,trgl.u2=(float)0.98,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.98;
face1.addTriangle(&trgl);
trgl.p1=14 , trgl.p2=13 , trgl.p3=9 ,trgl.maped=TRUE,trgl.map=1;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.02,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.02;
face1.addTriangle(&trgl);
trgl.p1=14 , trgl.p2=9 , trgl.p3=10 ,trgl.maped=TRUE,trgl.map=1;
trgl.u1=(float)0.02,trgl.v1=(float)0.98,trgl.u2=(float)0.98,trgl.v2=(float)0.02,trgl.u3=(float)0.98,trgl.v3=(float)0.98;
face1.addTriangle(&trgl);
VECTOR3D v2={4,7,2};
VECTOR3D v8={4,2,7};
VECTOR3D v3={0,0,-1};
pot2.x = 250,pot2.y = 250,pot2.z = 820;
pot3.x = 250,pot3.y = 250,pot3.z = 250;
MKScaleMatrix(&m5,&pot3,2);
p3.scalePoints(&m5,CONVERTALL);
MKRotateMatrix(&m5,&pot3,&v2,3.1416/90);
MKRotateMatrix(&m8,&pot3,&v8,3.1416/90);
// p3.rotatePoints(&m5,CONVERTALL);
MKWCtoVcMatrix(&m6,&v3,&pot2);
MKProjectionMatrix(&m7,550,320,240);
matrixMul(&m7,&m6);
if(tex.addTexture("w1.bmp") == -1)
return FALSE;
if(tex.addTexture("w2.bmp") == -1)
return FALSE;
if(tex.addTexture("w3.bmp") == -1)
return FALSE;
if(tex.addLevelTexture("cp.bmp") == -1)
return FALSE;
if(tex.addLevelTexture("chopper.bmp") == -1)
return FALSE;
// if(tex.addTexture("chopper.bmp") == -1)
// return FALSE;
CONVERT_MATRIX3D m;
POINT3D pot2;
pot2.x = -20,pot2.y= 0, pot2.z=0;
// if(readDxfFile("chopper.dxf",&p1,&face) == FALSE)
// return FALSE;
if(readAscFile("chopper.asc",&p1,&face) == FALSE)
return FALSE;
/* TRIANGLE3D *tp;
tp = &face.faces[438];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.24,tp->v1=(float)0.5,tp->u2=(float)0.24,tp->v2=(float)0.9,tp->u3=(float)0.1,tp->v3=(float)0.9;
tp = &face.faces[439];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.24,tp->v1=(float)0.5,tp->u2=(float)0.1,tp->v2=(float)0.9,tp->u3=(float)0.1,tp->v3=(float)0.5;
tp = &face.faces[436];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.24,tp->v1=(float)0.1,tp->u2=(float)0.24,tp->v2=(float)0.5,tp->u3=(float)0.1,tp->v3=(float)0.5;
tp = &face.faces[437];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.24,tp->v1=(float)0.1,tp->u2=(float)0.1,tp->v2=(float)0.5,tp->u3=(float)0.1,tp->v3=(float)0.1;
tp = &face.faces[390];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.38,tp->v1=(float)0.5,tp->u2=(float)0.38,tp->v2=(float)0.9,tp->u3=(float)0.24,tp->v3=(float)0.9;
tp = &face.faces[391];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.38,tp->v1=(float)0.5,tp->u2=(float)0.24,tp->v2=(float)0.9,tp->u3=(float)0.24,tp->v3=(float)0.5;
tp = &face.faces[388];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.38,tp->v1=(float)0.1,tp->u2=(float)0.38,tp->v2=(float)0.5,tp->u3=(float)0.24,tp->v3=(float)0.5;
tp = &face.faces[389];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.38,tp->v1=(float)0.1,tp->u2=(float)0.24,tp->v2=(float)0.5,tp->u3=(float)0.24,tp->v3=(float)0.1;
tp = &face.faces[345];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.52,tp->v1=(float)0.5,tp->u2=(float)0.38,tp->v2=(float)0.9,tp->u3=(float)0.38,tp->v3=(float)0.5;
tp = &face.faces[344];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.52,tp->v1=(float)0.5,tp->u2=(float)0.52,tp->v2=(float)0.9,tp->u3=(float)0.38,tp->v3=(float)0.9;
tp = &face.faces[342];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.52,tp->v1=(float)0.1,tp->u2=(float)0.52,tp->v2=(float)0.5,tp->u3=(float)0.38,tp->v3=(float)0.5;
tp = &face.faces[343];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.52,tp->v1=(float)0.1,tp->u2=(float)0.38,tp->v2=(float)0.5,tp->u3=(float)0.38,tp->v3=(float)0.1;
tp = &face.faces[296];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.66,tp->v1=(float)0.5,tp->u2=(float)0.66,tp->v2=(float)0.9,tp->u3=(float)0.52,tp->v3=(float)0.9;
tp = &face.faces[297];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.66,tp->v1=(float)0.5,tp->u2=(float)0.52,tp->v2=(float)0.9,tp->u3=(float)0.52,tp->v3=(float)0.5;
tp = &face.faces[294];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.66,tp->v1=(float)0.1,tp->u2=(float)0.66,tp->v2=(float)0.5,tp->u3=(float)0.52,tp->v3=(float)0.5;
tp = &face.faces[295];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.66,tp->v1=(float)0.1,tp->u2=(float)0.52,tp->v2=(float)0.5,tp->u3=(float)0.52,tp->v3=(float)0.1;
tp = &face.faces[248];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.8,tp->v1=(float)0.5,tp->u2=(float)0.8,tp->v2=(float)0.9,tp->u3=(float)0.66,tp->v3=(float)0.9;
tp = &face.faces[249];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.8,tp->v1=(float)0.5,tp->u2=(float)0.66,tp->v2=(float)0.9,tp->u3=(float)0.66,tp->v3=(float)0.5;
tp = &face.faces[246];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.8,tp->v1=(float)0.1,tp->u2=(float)0.8,tp->v2=(float)0.5,tp->u3=(float)0.66,tp->v3=(float)0.5;
tp = &face.faces[247];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.8,tp->v1=(float)0.1,tp->u2=(float)0.66,tp->v2=(float)0.5,tp->u3=(float)0.66,tp->v3=(float)0.1;
tp = &face.faces[202];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.94,tp->v1=(float)0.5,tp->u2=(float)0.94,tp->v2=(float)0.9,tp->u3=(float)0.8,tp->v3=(float)0.9;
tp = &face.faces[203];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.94,tp->v1=(float)0.5,tp->u2=(float)0.8,tp->v2=(float)0.9,tp->u3=(float)0.8,tp->v3=(float)0.5;
tp = &face.faces[200];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.94,tp->v1=(float)0.1,tp->u2=(float)0.94,tp->v2=(float)0.5,tp->u3=(float)0.8,tp->v3=(float)0.5;
tp = &face.faces[201];
tp->maped=TRUE,tp->map=3,tp->u1=(float)0.94,tp->v1=(float)0.1,tp->u2=(float)0.8,tp->v2=(float)0.5,tp->u3=(float)0.8,tp->v3=(float)0.1;
*/
MKScaleMatrix(&m,&pot2,3);
p1.scalePoints(&m,CONVERTALL);
groundLight = 12;
spotLight = 19;
WORD f16,f8,f4,f2,f1,w16,w8,w4,w2,w1;
WORD color = 0xe400;
WORD color1 = 0xffff - color;
/* f16 = (color&0x8610)>>4;
f8 = (color&0xc718)>>3;
f4 = (color&0xe79c)>>2;
f2 = (color&0xf7de)>>1;
f1 = color;
w16 = (color1&0x8610)>>4;
w8 = (color1&0xc718)>>3;
w4 = (color1&0xe79c)>>2;
w2 = (color1&0xf7de)>>1;
w1 = color1;*/
f1 = color;
color = (color&0xf7de)>>1;
f2 = color;
color = ((color+0x0821)&0xf7de)>>1;
f4 = color;
color = ((color+0x0821)&0xf7de)>>1;
f8 = color;
color = ((color+0x0821)&0xf7de)>>1;
f16 = color;
w1 = color1;
color1 = (color1&0xf7de)>>1;
w2 = color1;
color1 = ((color1+0x0821)&0xf7de)>>1;
w4 = color1;
color1 = ((color1+0x0821)&0xf7de)>>1;
w8 = color1;
color1 = ((color1+0x0821)&0xf7de)>>1;
w16 = color1;
lightLevel[0] = 0;
lightLevel[1] = f16;
lightLevel[2] = f8;
lightLevel[3] = f8+f16;
lightLevel[4] = f4;
lightLevel[5] = f4+f16;
lightLevel[6] = f4+f8;
lightLevel[7] = f4+f8+f16;
lightLevel[8] = f2;
lightLevel[9] = f2+f16;
lightLevel[10] = f2+f8;
lightLevel[11] = f2+f8+f16;
lightLevel[12] = f2+f4;
lightLevel[13] = f2+f4+f16;
lightLevel[14] = f2+f4+f8;
lightLevel[15] = f2+f4+f8+f16;
lightLevel[16] = f1;
lightLevel[17] = f1+w16;
lightLevel[18] = f1+w8;
lightLevel[19] = f1+w8+w16;
lightLevel[20] = f1+w4;
lightLevel[21] = f1+w4+w16;
lightLevel[22] = f1+w4+w8;
lightLevel[23] = f1+w4+w8+w16;
lightLevel[24] = f1+w2;
lightLevel[25] = f1+w2+w16;
lightLevel[26] = f1+w2+w8;
lightLevel[27] = f1+w2+w8+w16;
lightLevel[28] = f1+w2+w4;
lightLevel[29] = f1+w2+w4+w16;
lightLevel[30] = f1+w2+w4+w8;
lightLevel[31] = f1+w2+w4+w8+w16;
lightLevel[32] = f1+w1;
vLight.x = -1,vLight.y = -1, vLight.z = -1;
potLight.x = 400,potLight.y = 000,potLight.z = 600;
vector3dToSTD(&vLight);
VECTOR3D v={0,0,-1};
VECTOR3D v1={1,4,3};
pot.x = -20,pot.y = 150,pot.z = 750;
pot1.x = -20,pot1.y = 0,pot1.z = 0;
MKRotateMatrix(&m4,&pot1,&v1,3.1416/120);
MKWCtoVcMatrix(&m1,&v,&pot);
MKProjectionMatrix(&m2,550,320,240);
matrixMul(&m2,&m1);
return TRUE;
}
/*
* WinMain - initialization, message loop
*/
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
lpCmdLine = lpCmdLine;
hPrevInstance = hPrevInstance;
if( !doInit( hInstance, nCmdShow ) )
{
return FALSE;
}
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
} /* WinMain */
unsigned mrand(unsigned range)
{ long l = rand();
return l*range/0x7fff;
}
void lineDemo1(DDSURFACEDESC* ddsd)
{ static int l=0,c=0;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=1;ggg-=2;bbb+=3;
for(int i=l;i<640;i+=12)
{ line(ddsd,i,0,639-i,479,color);
}
for(i=11-l;i<480;i+=12)
{ line(ddsd,0,i,639,479-i,color);
}
l++;
if(l == 11)
l = 0;
}
void lineDemo2(DDSURFACEDESC* ddsd)
{ static int l=0;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=1;ggg-=2;bbb+=3;
for(int i=l;i<640;i+=12)
{ lineS(ddsd,i,0,639-i,479,color);
}
for(i=11-l;i<480;i+=12)
{ lineS(ddsd,0,i,639,479-i,color);
}
l++;
if(l == 11)
l = 0;
}
void circleDemo1(DDSURFACEDESC* ddsd)
{ static int l = 0;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=1;ggg-=2;bbb+=3;
for(int i=l;i<400;i+=10)
{ circle(ddsd,320,240,i,color);
}
l++;
if(l == 10)
l=0;
}
void circleDemo2(DDSURFACEDESC* ddsd)
{ static int l = 100;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=1;ggg-=2;bbb+=3;
circleFill(ddsd,320,240,l,color);
l++;
if(l>350)
l=100;
}
void ellipseDemo1(DDSURFACEDESC* ddsd)
{ static int l = 0;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr-=1;ggg-=2;bbb+=3;
for(int i=l;i<350;i+=20)
{ ellipse(ddsd,240-i,230-i,400+i,250+i,color);
ellipse(ddsd,310-i,180-i,330+i,300+i,color);
}
l++;
if(l == 20)
l=0;
}
void ellipseDemo2(DDSURFACEDESC* ddsd)
{ static int l = 0,i=4;
static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=1;ggg-=2;bbb+=3;
ellipseFill(ddsd,240-l,230-l,400+l,250+l,color);
l+=i;
if(l >= 250)
i=-4;
if(l <= -280)
i=4;
}
void rectDemo1(DDSURFACEDESC* ddsd)
{ static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=2;ggg+=1;bbb+=2;
static int i[9][6]={{10,13,110,43,1,1},
{45,61,95,111,-1,1},
{230,30,300,200,1,-1},
{320,350,540,420,-1,-1},
{140,300,220,380,-1,1},
{420,20,620,220,1,-1},
{430,30,460,80,-1,-1},
{540,180,600,200,-1,1},
{430,100,470,140,1,1}
};
for(int l=0;l<6;l++)
{ i[l][0]+=i[l][4];
i[l][2]+=i[l][4];
i[l][1]+=i[l][5];
i[l][3]+=i[l][5];
drawRect(ddsd,i[l][0],i[l][1],i[l][2],i[l][3],color);
}
for(l=6;l<9;l++)
{ i[l][0]+=i[l][4]+i[5][4];
i[l][2]+=i[l][4]+i[5][4];
i[l][1]+=i[l][5]+i[5][5];
i[l][3]+=i[l][5]+i[5][5];
drawRect(ddsd,i[l][0],i[l][1],i[l][2],i[l][3],color);
}
for(l = 0;l<6;l++)
{ if( i[l][0]== 0||i[l][0]==639||i[l][2]==0||i[l][2]==639)
{ i[l][4] = -i[l][4];
if(i[l][1] == 0||i[l][1]==479||i[l][3]==0||i[l][3]==479)
i[l][5]= -i[l][5];
continue;
}
if(i[l][1] == 0||i[l][1]==479||i[l][3]==0||i[l][3]==479)
{ i[l][5]= -i[l][5];
continue;
}
for(int j=0;j<6;j++)
{ if(l!=j)
{ if(i[l][1]<=i[j][3]&&i[l][3]>=i[j][1])
if(i[l][0]==i[j][2]||i[l][0]+i[l][4]==i[j][2]||i[l][2]==i[j][0]||i[l][2]+i[l][4]==i[j][0])
{ i[l][4]=-i[l][4];
break;
}
}
}
for(j=0;j<6;j++)
{ if(l!=j)
{ if(i[l][0]<=i[j][2]&&i[l][2]>=i[j][0])
if(i[l][1]==i[j][3]||i[l][1]+i[l][5]==i[j][3]||i[l][3]==i[j][1]||i[l][3]+i[l][5]==i[j][1])
{ i[l][5]=-i[l][5];
break;
}
}
}
}
for(l = 6;l<9;l++)
{ for(int j=5;j<9;j++)
{ if(l!=j)
{ if(i[l][1]<=i[j][3]&&i[l][3]>=i[j][1])
if(i[l][0]==i[j][2]||i[l][0]+i[l][4]==i[j][2]||i[l][2]==i[j][0]||i[l][2]+i[l][4]==i[j][0]||i[l][0]==i[j][0]||i[l][0]+i[l][4]==i[j][0]||i[l][2]==i[j][2]||i[l][2]+i[l][4]==i[j][2])
{ i[l][4]=-i[l][4];
break;
}
}
}
for(j=5;j<9;j++)
{ if(l!=j)
{ if(i[l][0]<=i[j][2]&&i[l][2]>=i[j][0])
if(i[l][1]==i[j][3]||i[l][1]+i[l][5]==i[j][3]||i[l][3]==i[j][1]||i[l][3]+i[l][5]==i[j][1]||i[l][1]==i[j][1]||i[l][1]+i[l][5]==i[j][1]||i[l][3]==i[j][3]||i[l][3]+i[l][5]==i[j][3])
{ i[l][5]=-i[l][5];
break;
}
}
}
}
}
void rectDemo2(DDSURFACEDESC* ddsd)
{ static unsigned char rrr=0,ggg=80,bbb=160;
WORD color=RGBto16bit(&ddsd->ddpfPixelFormat,rrr,ggg,bbb);
rrr+=2;ggg+=1;bbb+=2;
static int i[9][6]={{10,13,110,43,1,1},
{45,61,95,111,-1,1},
{230,30,300,200,1,-1},
{320,350,540,420,-1,-1},
{140,300,220,380,-1,1},
{420,20,620,220,1,-1},
{430,30,460,80,-1,-1},
{540,180,600,200,-1,1},
{430,100,470,140,1,1}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -