亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cflock.cpp

?? 這是一個用OPENGL和VC++作的人工智能程序,大家可以借鑒一下
?? CPP
字號:
/* Copyright (C) Steven Woodcock, 2000.  * All rights reserved worldwide. * * This software is provided "as is" without express or implied * warranties. You may freely copy and compile this source into * applications you distribute provided that the copyright text * below is included in the resulting source code, for example: * "Portions Copyright (C) Steven Woodcock, 2000" *///*********************************************************************// Name:     CFlock.cpp// Purpose:  Class definitions and method prototypes for the flocks//           themselves.//*********************************************************************//// includes//#include "CFlock.h" #include "glut.h"#include "mtxlib.h"//// flocking debug globals//extern bool gDrawAxes;extern bool gDrawPerceptionDist;extern bool gDrawKeepawayDist;extern bool gDrawSeparationDist;//// static variable initialization//int CFlock::FlockCount = 0;CFlock * CFlock::ListOfFlocks[] = {NULL};//// constructor and destructor methods//// Constructor.// Creates a new flock.CFlock::CFlock (void){#ifdef FLOCK_DEBUG   myprintf("\nCFlock contructor called for %d\n",FlockCount);#endif   // initialize internals   m_id           = FlockCount;   m_num_members  = 0;   m_first_member = NULL;   ListOfFlocks[FlockCount] = this;   // increment counter   FlockCount++;   return;}// Destructor.CFlock::~CFlock (void){#ifdef FLOCK_DEBUG   myprintf("\nCFlock destructor called for %d\n",m_id);#endif   // clear values   m_id = m_num_members = 0;   m_first_member = NULL;   // remove it from the list   ListOfFlocks[FlockCount] = NULL;   // decrement counter   FlockCount--;   return;}/////////////////////// flocking functions/////////////////////// Update.// Updates all members of a flock.void CFlock::Update (void){   CBoid *ptr;   // loop over all members of this flock, invoke   // their flocking method, then draw them   ptr = m_first_member;   while (ptr != NULL) {      // flock the boid      ptr->FlockIt(m_id,m_first_member);      // get next boid      ptr = ptr->GetNext();   }}//////////////////////// rendering functions//////////////////////void CFlock::Draw (void){   CBoid *ptr;   vector *pos, *orient;   float color_r, color_g, color_b;#ifdef DEBUG_FLOCK   myprintf("now rendering boids in flock %d\n",m_id);#endif   // select this flock's color   switch (m_id)    {      case 0:                             // red          color_r = 1.0f;         color_g = 0.1f;         color_b = 0.0f;         break;      case 1:                             // orange         color_r = 1.0f;         color_g = 0.5f;         color_b = 0.0f;         break;      case 2:                             // magenta         color_r = 1.0f;         color_g = 0.0f;         color_b = 1.0f;         break;      case 3:                             // blue          color_r = 0.0f;         color_g = 0.0f;         color_b = 1.0f;         break;      case 4:                             // green          color_r = 0.0f;         color_g = 1.0f;         color_b = 0.0f;         break;      default:                             // black          color_r = 0.0f;         color_g = 0.0f;         color_b = 0.0f;         break;   }   // loop over all members of this flock, extract   // their position and orientation, and then draw them   ptr = m_first_member;   while (ptr != NULL) {      pos = ptr->GetPos();      orient = ptr->GetOrient();      // push our world matrix down      glPushMatrix();         // translate to where this boid is         glTranslatef(pos->x, pos->y, pos->z);         // rotate to the boid's frame         glRotatef(RadToDeg(orient->z), 0.0, 0.0, 1.0);   // roll         glRotatef(RadToDeg(orient->y), 0.0, 1.0, 0.0);   // yaw         glRotatef(RadToDeg(orient->x), 1.0, 0.0, 0.0);   // pitch         // test for any debug options         // draw perception distance spheres?         if (gDrawPerceptionDist) {            glColor3f (1.0f, 1.0f, 1.0f);            glutWireSphere (Default_Perception_Range, 12, 12);         }         // draw keepaway distance spheres?         if (gDrawKeepawayDist) {            glColor3f (1.0f, 0.0f, 0.0f);            glutWireSphere (KeepAwayDist, 12, 12);         }         // draw separation distance spheres?         if (gDrawSeparationDist) {            glColor3f (color_r, color_g, color_b);            glutWireSphere (SeparationDist, 12, 12);         }         // draw local (boid space) XYZ axes?         if (gDrawAxes) {            glBegin(GL_LINES);               glColor3f(1.0f, 0.0f, 0.0f);               glVertex3f(0.0f, 0.0f, 0.0f);               glVertex3f(2.0f, 0.0f, 0.0f);               glColor3f(0.0f, 1.0f, 0.0f);                glVertex3f(0.0f, 0.0f, 0.0f);               glVertex3f(0.0f, 2.0f, 0.0f);               glColor3f(0.0f, 0.0f, 1.0f);                glVertex3f(0.0f, 0.0f, 0.0f);               glVertex3f(0.0f, 0.0f, 2.0f);            glEnd();         }         // set this boid's color         glColor3f(color_r, color_g, color_b);         // draw the boid         glBegin(GL_TRIANGLES);            // back upper right            glVertex3f( 0.0,  0.25, 0.0);            glVertex3f(-0.25, 0.0,  0.0);            glVertex3f( 0.0,  0.0,  0.0);            // back lower right            glVertex3f( 0.0, -0.25, 0.0);            glVertex3f(-0.25, 0.0,  0.0);            glVertex3f( 0.0,  0.0,  0.0);            // back upper left            glVertex3f(0.0,  0.25, 0.0);            glVertex3f(0.25, 0.0,  0.0);            glVertex3f(0.0,  0.0,  0.0);            // back lower left            glVertex3f(0.0, -0.25, 0.0);            glVertex3f(0.25, 0.0,  0.0);            glVertex3f(0.0,  0.0,  0.0);            // make tops slightly darker            glColor3f(color_r - 0.1f, color_g - 0.1f, color_b - 0.1f);            // top left side            glVertex3f(0.0,  0.25, 0.0);            glVertex3f(0.0,  0.0,  1.0);            glVertex3f(0.25, 0.0,  0.0);            // top right side            glVertex3f( 0.0,  0.25, 0.0);            glVertex3f( 0.0,  0.0,  1.0);            glVertex3f(-0.25, 0.0,  0.0);            // make bottoms slightly lighter            glColor3f(color_r + 0.1f, color_g + 0.1f, color_b + 0.1f);            // bottom left side            glVertex3f(0.0, -.25, 0.0);            glVertex3f(0.0,  0.0, 1.0);            glVertex3f(0.25, 0.0, 0.0);            // bottom right side            glVertex3f( 0.0, -0.25, 0.0);            glVertex3f( 0.0,  0.0,  1.0);            glVertex3f(-0.25, 0.0,  0.0);         glEnd();         // Pop the rotation matrix from the MODELVIEW stack         glPopMatrix();      // get next boid      ptr = ptr->GetNext();   }}//////////////////////////// miscellaneous functions//////////////////////////// AddTo.// Adds the indicated member to the flock.void CFlock::AddTo (CBoid * member){   CBoid *ptr;#ifdef FLOCK_DEBUG   myprintf("adding %x to flock %d\n",member,m_id);#endif   // if this is the first member added to this   // flock, store him in the first_member slot   if (!m_first_member) {            m_first_member = member;      member->SetNext(NULL);      member->SetPrev(NULL);   } else {         // not the first member...follow the list      // of members and add this guy to the end      ptr = m_first_member;      while (ptr->GetNext() != NULL) ptr = ptr->GetNext();               // we should now be at the end...add our new guy      ptr->SetNext(member);      member->SetPrev(ptr);   }   // increment # of members in this flock   m_num_members++;}// GetCount.// Returns the # of members in a given flock.int CFlock::GetCount (void){   return (m_num_members);}// PrintData.// Dumps all data describing a given flock.void CFlock::PrintData (void){   CBoid *ptr;   myprintf("\n");   myprintf("=== Flock # %d ===\n",m_id);   // print the flock data   myprintf("Number of members = %d\n", m_num_members);      // print data on each member   ptr = m_first_member;   while (ptr != NULL) {      ptr->PrintData();      ptr = ptr->GetNext();   }}// GetFirstMember.// Returns a pointer to the first member of a given flock (if any).CBoid * CFlock::GetFirstMember (void){   // return pointer to first member of flock   return (m_first_member);}// RemoveFrom.// Removes the indicated member from the flock.void CFlock::RemoveFrom (CBoid * member){   CBoid *ptr = m_first_member;#ifdef FLOCK_DEBUG   myprintf("\ntrying to remove %x\n",member);#endif   // search for the indicated member   while (ptr != NULL)   {#ifdef FLOCK_DEBUG      myprintf("searching, ptr = %x\n",ptr);#endif      // test:  find it yet?      if (ptr == member) break;      ptr = ptr->GetNext();   }   // if we found it, remove it from the list   if (ptr) {#ifdef FLOCK_DEBUG      myprintf("removing...\n");#endif      // found it...see if we have to tweak first member      if (ptr == m_first_member) {         if (m_num_members == 1) {            m_first_member = NULL;         } else {            m_first_member = ptr->GetNext();         }      }      // now delink it      ptr->LinkOut();      // cleanup      ptr->SetNext(NULL);      ptr->SetPrev(NULL);      // decrement counter      m_num_members--;   } else {#ifdef FLOCK_DEBUG      myprintf("not found\n");#endif   }#ifdef FLOCK_DEBUG   myprintf("first member is now = %x\n",m_first_member);#endif}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲国内综合视频| 青娱乐精品在线视频| 成人美女在线观看| 国产精品麻豆欧美日韩ww| 成人的网站免费观看| 亚洲美女偷拍久久| 欧美美女视频在线观看| 美女视频一区二区三区| 精品国产露脸精彩对白| 成人一级片在线观看| 亚洲精品国产一区二区精华液| 91麻豆国产福利在线观看| 亚洲国产精品久久人人爱| 91麻豆精品91久久久久久清纯 | 亚洲高清免费观看 | 久久精品国产秦先生| 久久久影视传媒| 99热在这里有精品免费| 亚洲成人中文在线| 精品福利一二区| 91麻豆福利精品推荐| 午夜婷婷国产麻豆精品| 久久网站最新地址| 在线观看精品一区| 国产在线不卡视频| 亚洲免费色视频| 欧美tickling挠脚心丨vk| jlzzjlzz亚洲日本少妇| 亚洲v中文字幕| 国产女主播视频一区二区| 欧美色图片你懂的| 国产精品1区2区| 午夜久久久久久久久| 久久精品视频免费观看| 欧美视频一区二区三区在线观看| 久久99精品久久久久久久久久久久| 欧美国产激情二区三区 | 成人禁用看黄a在线| 亚洲成人激情社区| 国产精品福利一区| 欧美电影免费提供在线观看| 色综合咪咪久久| 国产麻豆精品95视频| 婷婷国产在线综合| 国产精品成人一区二区三区夜夜夜| 69久久99精品久久久久婷婷| 99久久99久久久精品齐齐| 久久精品国产色蜜蜜麻豆| 亚洲一区二区综合| 中文字幕中文字幕一区| 欧美成人一区二区三区在线观看| 欧美体内she精高潮| 高清beeg欧美| 国内精品视频一区二区三区八戒| 亚洲国产精品一区二区久久恐怖片| 国产欧美精品一区二区色综合| 欧美一区日本一区韩国一区| 在线精品亚洲一区二区不卡| 不卡av免费在线观看| 国产麻豆成人传媒免费观看| 欧美a一区二区| 天涯成人国产亚洲精品一区av| 亚洲男女毛片无遮挡| 国产精品久久久久影院老司| 久久蜜桃av一区二区天堂 | 久久精品av麻豆的观看方式| 午夜精品福利在线| 亚洲一区在线视频观看| 亚洲摸摸操操av| 亚洲欧美一区二区久久| 亚洲欧美在线另类| 中文字幕亚洲视频| 国产精品国产自产拍高清av王其| 久久精品视频在线免费观看| 国产性天天综合网| 国产丝袜在线精品| 久久久久久久久岛国免费| 久久夜色精品一区| 久久男人中文字幕资源站| 久久精品视频网| 中文字幕成人av| 国产精品久久久久久久岛一牛影视 | 久久九九全国免费| 久久久久久一二三区| 国产日韩欧美电影| 国产精品国产三级国产三级人妇| 亚洲欧洲99久久| 亚洲国产欧美日韩另类综合 | 国产精品少妇自拍| 中文字幕亚洲成人| 一级做a爱片久久| 天堂va蜜桃一区二区三区| 日本成人在线电影网| 美女高潮久久久| 国产一区二区成人久久免费影院| 国产高清一区日本| 91在线国内视频| 欧美日韩精品一区二区三区四区| 亚洲欧美在线aaa| 亚洲欧美日韩小说| 日韩中文字幕av电影| 精品在线播放免费| 成人激情小说网站| 欧美日韩国产高清一区| 日韩三级在线观看| 国产精品区一区二区三| 一片黄亚洲嫩模| 国产自产视频一区二区三区| aaa亚洲精品一二三区| 欧美日韩视频在线第一区| 日韩欧美中文字幕制服| 日本一区二区三区久久久久久久久不 | 欧美无砖专区一中文字| 欧美不卡123| 亚洲欧美一区二区久久| 久久av中文字幕片| 91麻豆自制传媒国产之光| 91精品国产欧美一区二区18 | 99久久综合99久久综合网站| 欧美日韩一区国产| 久久精品亚洲国产奇米99| 亚洲综合小说图片| 国产一区二区三区最好精华液| 色伊人久久综合中文字幕| 欧美va日韩va| 亚洲一区二区三区三| 国产aⅴ精品一区二区三区色成熟| 欧美在线999| 国产精品欧美综合在线| 蜜臀av一区二区| 在线中文字幕不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品毛片无遮挡高清| 水野朝阳av一区二区三区| 成人高清视频在线| 精品少妇一区二区三区视频免付费| 亚洲欧洲成人精品av97| 激情五月婷婷综合网| 欧美伦理影视网| 亚洲女性喷水在线观看一区| 国产精品一区二区在线播放| 91精品国产综合久久香蕉的特点| 亚洲日本va午夜在线影院| 国产精品一区二区男女羞羞无遮挡 | 国产亚洲欧美在线| 日本怡春院一区二区| 欧美亚洲另类激情小说| 国产精品女上位| 国产精品中文字幕日韩精品| 日韩欧美精品在线视频| 丝袜诱惑亚洲看片| 欧美午夜电影网| 亚洲精品国产第一综合99久久| 成人国产一区二区三区精品| 久久久久久影视| 狠狠色狠狠色综合| 日韩欧美一二区| 日本va欧美va精品| 欧美精品 国产精品| 亚洲午夜免费视频| 欧美性xxxxxx少妇| 亚洲一二三区不卡| 欧美视频在线一区二区三区 | 91久久免费观看| 亚洲摸摸操操av| 91久久线看在观草草青青| 亚洲欧美电影院| 91福利视频在线| 亚洲自拍偷拍麻豆| 欧美日韩色一区| 日韩av在线播放中文字幕| 91精品国产一区二区三区蜜臀| 石原莉奈在线亚洲二区| 欧美高清视频一二三区| 免费欧美在线视频| 日韩无一区二区| 国产一区二区三区香蕉| 国产午夜精品久久久久久久| 东方欧美亚洲色图在线| 中文字幕日韩一区二区| 91黄色免费看| 日本欧美韩国一区三区| 日韩女优av电影| 国产91高潮流白浆在线麻豆| 国产日产亚洲精品系列| 91在线观看污| 亚洲成人一区二区在线观看| 欧美精品一级二级| 国产在线精品一区二区夜色| 国产欧美精品一区aⅴ影院| 一本大道综合伊人精品热热| 亚洲成人高清在线| 亚洲精品一区在线观看| av影院午夜一区| 亚洲gay无套男同| 欧美精品一区二区三区高清aⅴ| 国产iv一区二区三区| 亚洲自拍偷拍麻豆| 久久美女艺术照精彩视频福利播放| 99视频在线精品|