📄 shark.cpp
字号:
glNormal3fv(N050);
glVertex3fv(P050);
glNormal3fv(N051);
glVertex3fv(P051);
glNormal3fv(N069);
glVertex3fv(P069);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N051);
glVertex3fv(P051);
glNormal3fv(N002);
glVertex3fv(P002);
glNormal3fv(N069);
glVertex3fv(P069);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N050);
glVertex3fv(P050);
glNormal3fv(N069);
glVertex3fv(P069);
glNormal3fv(N002);
glVertex3fv(P002);
glEnd();
}
void
Fish006(void)
{
glBegin(GL_POLYGON);
glNormal3fv(N066);
glVertex3fv(P066);
glNormal3fv(N016);
glVertex3fv(P016);
glNormal3fv(N026);
glVertex3fv(P026);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N015);
glVertex3fv(P015);
glNormal3fv(N066);
glVertex3fv(P066);
glNormal3fv(N025);
glVertex3fv(P025);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N025);
glVertex3fv(P025);
glNormal3fv(N066);
glVertex3fv(P066);
glNormal3fv(N026);
glVertex3fv(P026);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N066);
glVertex3fv(P066);
glNormal3fv(N058);
glVertex3fv(P058);
glNormal3fv(N016);
glVertex3fv(P016);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N015);
glVertex3fv(P015);
glNormal3fv(N058);
glVertex3fv(P058);
glNormal3fv(N066);
glVertex3fv(P066);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N058);
glVertex3fv(P058);
glNormal3fv(N015);
glVertex3fv(P015);
glNormal3fv(N016);
glVertex3fv(P016);
glEnd();
}
void
Fish007(void)
{
glBegin(GL_POLYGON);
glNormal3fv(N062);
glVertex3fv(P062);
glNormal3fv(N022);
glVertex3fv(P022);
glNormal3fv(N032);
glVertex3fv(P032);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N062);
glVertex3fv(P062);
glNormal3fv(N032);
glVertex3fv(P032);
glNormal3fv(N064);
glVertex3fv(P064);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N022);
glVertex3fv(P022);
glNormal3fv(N062);
glVertex3fv(P062);
glNormal3fv(N032);
glVertex3fv(P032);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N062);
glVertex3fv(P062);
glNormal3fv(N064);
glVertex3fv(P064);
glNormal3fv(N032);
glVertex3fv(P032);
glEnd();
}
void
Fish008(void)
{
glBegin(GL_POLYGON);
glNormal3fv(N063);
glVertex3fv(P063);
glNormal3fv(N019);
glVertex3fv(P019);
glNormal3fv(N029);
glVertex3fv(P029);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N019);
glVertex3fv(P019);
glNormal3fv(N063);
glVertex3fv(P063);
glNormal3fv(N029);
glVertex3fv(P029);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N063);
glVertex3fv(P063);
glNormal3fv(N029);
glVertex3fv(P029);
glNormal3fv(N065);
glVertex3fv(P065);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(N063);
glVertex3fv(P063);
glNormal3fv(N065);
glVertex3fv(P065);
glNormal3fv(N029);
glVertex3fv(P029);
glEnd();
}
void
Fish009(void)
{
glBegin(GL_POLYGON);
glVertex3fv(P059);
glVertex3fv(P012);
glVertex3fv(P009);
glVertex3fv(P060);
glEnd();
glBegin(GL_POLYGON);
glVertex3fv(P012);
glVertex3fv(P004);
glVertex3fv(P007);
glVertex3fv(P009);
glEnd();
}
void
Fish_1(void)
{
Fish004();
Fish005();
Fish003();
Fish007();
Fish006();
Fish002();
Fish008();
Fish009();
Fish001();
}
void
Fish_2(void)
{
Fish005();
Fish004();
Fish003();
Fish008();
Fish006();
Fish002();
Fish007();
Fish009();
Fish001();
}
void
Fish_3(void)
{
Fish005();
Fish004();
Fish007();
Fish003();
Fish002();
Fish008();
Fish009();
Fish001();
Fish006();
}
void
Fish_4(void)
{
Fish005();
Fish004();
Fish008();
Fish003();
Fish002();
Fish007();
Fish009();
Fish001();
Fish006();
}
void
Fish_5(void)
{
Fish009();
Fish006();
Fish007();
Fish001();
Fish002();
Fish003();
Fish008();
Fish004();
Fish005();
}
void
Fish_6(void)
{
Fish009();
Fish006();
Fish008();
Fish001();
Fish002();
Fish007();
Fish003();
Fish004();
Fish005();
}
void
Fish_7(void)
{
Fish009();
Fish001();
Fish007();
Fish005();
Fish002();
Fish008();
Fish003();
Fish004();
Fish006();
}
void
Fish_8(void)
{
Fish009();
Fish008();
Fish001();
Fish002();
Fish007();
Fish003();
Fish005();
Fish004();
Fish006();
}
void
DrawShark(fishRec * fish)
{
float mat[4][4];
int n;
float seg1, seg2, seg3, seg4, segup;
float thrash, chomp;
fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
thrash = 50.0 * fish->v;
seg1 = 0.6 * thrash * sin(fish->htail * RRAD);
seg2 = 1.8 * thrash * sin((fish->htail + 45.0) * RRAD);
seg3 = 3.0 * thrash * sin((fish->htail + 90.0) * RRAD);
seg4 = 4.0 * thrash * sin((fish->htail + 110.0) * RRAD);
chomp = 0.0;
if (fish->v > 2.0) {
chomp = -(fish->v - 2.0) * 200.0;
}
P004[1] = iP004[1] + chomp;
P007[1] = iP007[1] + chomp;
P010[1] = iP010[1] + chomp;
P011[1] = iP011[1] + chomp;
P023[0] = iP023[0] + seg1;
P024[0] = iP024[0] + seg1;
P025[0] = iP025[0] + seg1;
P026[0] = iP026[0] + seg1;
P027[0] = iP027[0] + seg1;
P028[0] = iP028[0] + seg1;
P029[0] = iP029[0] + seg1;
P030[0] = iP030[0] + seg1;
P031[0] = iP031[0] + seg1;
P032[0] = iP032[0] + seg1;
P033[0] = iP033[0] + seg2;
P034[0] = iP034[0] + seg2;
P035[0] = iP035[0] + seg2;
P036[0] = iP036[0] + seg2;
P037[0] = iP037[0] + seg2;
P038[0] = iP038[0] + seg2;
P039[0] = iP039[0] + seg2;
P040[0] = iP040[0] + seg2;
P041[0] = iP041[0] + seg2;
P042[0] = iP042[0] + seg2;
P043[0] = iP043[0] + seg3;
P044[0] = iP044[0] + seg3;
P045[0] = iP045[0] + seg3;
P046[0] = iP046[0] + seg3;
P047[0] = iP047[0] + seg3;
P048[0] = iP048[0] + seg3;
P049[0] = iP049[0] + seg3;
P050[0] = iP050[0] + seg3;
P051[0] = iP051[0] + seg3;
P052[0] = iP052[0] + seg3;
P002[0] = iP002[0] + seg4;
P061[0] = iP061[0] + seg4;
P069[0] = iP069[0] + seg4;
P070[0] = iP070[0] + seg4;
fish->vtail += ((fish->dtheta - fish->vtail) * 0.1);
if (fish->vtail > 0.5) {
fish->vtail = 0.5;
} else if (fish->vtail < -0.5) {
fish->vtail = -0.5;
}
segup = thrash * fish->vtail;
P023[1] = iP023[1] + segup;
P024[1] = iP024[1] + segup;
P025[1] = iP025[1] + segup;
P026[1] = iP026[1] + segup;
P027[1] = iP027[1] + segup;
P028[1] = iP028[1] + segup;
P029[1] = iP029[1] + segup;
P030[1] = iP030[1] + segup;
P031[1] = iP031[1] + segup;
P032[1] = iP032[1] + segup;
P033[1] = iP033[1] + segup * 5.0;
P034[1] = iP034[1] + segup * 5.0;
P035[1] = iP035[1] + segup * 5.0;
P036[1] = iP036[1] + segup * 5.0;
P037[1] = iP037[1] + segup * 5.0;
P038[1] = iP038[1] + segup * 5.0;
P039[1] = iP039[1] + segup * 5.0;
P040[1] = iP040[1] + segup * 5.0;
P041[1] = iP041[1] + segup * 5.0;
P042[1] = iP042[1] + segup * 5.0;
P043[1] = iP043[1] + segup * 12.0;
P044[1] = iP044[1] + segup * 12.0;
P045[1] = iP045[1] + segup * 12.0;
P046[1] = iP046[1] + segup * 12.0;
P047[1] = iP047[1] + segup * 12.0;
P048[1] = iP048[1] + segup * 12.0;
P049[1] = iP049[1] + segup * 12.0;
P050[1] = iP050[1] + segup * 12.0;
P051[1] = iP051[1] + segup * 12.0;
P052[1] = iP052[1] + segup * 12.0;
P002[1] = iP002[1] + segup * 17.0;
P061[1] = iP061[1] + segup * 17.0;
P069[1] = iP069[1] + segup * 17.0;
P070[1] = iP070[1] + segup * 17.0;
glPushMatrix();
glTranslatef(0.0, 0.0, -3000.0);
glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]);
n = 0;
if (mat[0][2] >= 0.0) {
n += 1;
}
if (mat[1][2] >= 0.0) {
n += 2;
}
if (mat[2][2] >= 0.0) {
n += 4;
}
glScalef(2.0, 1.0, 1.0);
glEnable(GL_CULL_FACE);
switch (n) {
case 0:
Fish_1();
break;
case 1:
Fish_2();
break;
case 2:
Fish_3();
break;
case 3:
Fish_4();
break;
case 4:
Fish_5();
break;
case 5:
Fish_6();
break;
case 6:
Fish_7();
break;
case 7:
Fish_8();
break;
}
glDisable(GL_CULL_FACE);
glPopMatrix();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -