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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? isob.c

?? 一個開源的火災動力模擬的系統
?? C
?? 第 1 頁 / 共 5 頁
字號:
  nnewvertices=0;  for(i=1;i<nvertices+1;i++){    iim1=ordered_closestnodes[i-1];    if(i!=nvertices)ii=ordered_closestnodes[i];    inverse_vertexmap[iim1] = nnewvertices;    nn++;    vx = vertices[3*iim1  ]; sumx += vx;    vy = vertices[3*iim1+1]; sumy += vy;    vz = vertices[3*iim1+2]; sumz += vz;    if(surface->dataflag==1)sumt += tvertices[iim1];    flag=0;    if(i!=nvertices&&closestnodes[ii]!=closestnodes[iim1])flag=1;    if(i==nvertices||flag==1){      vertexmap[nnewvertices++] = iim1;      vertices[3*iim1  ]=sumx/nn;      vertices[3*iim1+1]=sumy/nn;      vertices[3*iim1+2]=sumz/nn;      if(surface->dataflag==1)tvertices[iim1]=sumt/nn;      nn=0;       sumx = 0; sumy = 0;sumz = 0; sumt = 0;    }  }  if(NewMemory((void **)&newvertices,3*nnewvertices*sizeof(unsigned short))==0){    return 1;  }  if(surface->dataflag==1){    if(NewMemory((void **)&newtvertices,nnewvertices*sizeof(unsigned short))==0){      return 1;    }  }  for(i=0;i<nnewvertices;i++){    ii = vertexmap[i];    newvertices[3*i  ] = vertices[3*ii  ];    newvertices[3*i+1] = vertices[3*ii+1];    newvertices[3*i+2] = vertices[3*ii+2];    if(surface->dataflag==1)newtvertices[i]=tvertices[ii];  }  FREEMEMORY(vertices);  surface->vertices = newvertices;  surface->nvertices = nnewvertices;  if(surface->dataflag==1){    FREEMEMORY(tvertices);    surface->tvertices=newtvertices;  }  triangles = surface->triangles;  for(i=0;i<ntriangles;i++){    triangles[i] = inverse_vertexmap[triangles[i]];  }  FREEMEMORY(ordered_closestnodes);  FREEMEMORY(vertexmap);  FREEMEMORY(inverse_vertexmap);  return 0;}/* ------------------ UpdateIsosurface ------------------------ */int UpdateIsosurface(isosurface *surface,                       float *xvert, float *yvert, float *zvert, float *tvert,                       int *closestnodes, int nvert, int *triangles, int ntriangles){  int n,ns, noldvert, *is;  float *xs=NULL, *ys=NULL, *zs=NULL, *ts=NULL;  int *cn=NULL;  if(ResizeSurface(surface,nvert,ntriangles,0)!=0)return 1;  /* copy vertex data */  if(nvert>0){    noldvert = surface->nvertices;    xs = surface->xvert + noldvert;    ys = surface->yvert + noldvert;    zs = surface->zvert + noldvert;    if(tvert!=NULL)ts = surface->tvert + noldvert;    cn = surface->closestnodes + noldvert;    for(n=0;n<nvert;n++){      xs[n] = xvert[n];      ys[n] = yvert[n];      zs[n] = zvert[n];      if(tvert!=NULL)ts[n]=tvert[n];      cn[n] = closestnodes[n];    }    surface->nvertices = noldvert + nvert;  }  /* copy triangle path data */  if(ntriangles>0){    ns = surface->ntriangles;    is = surface->triangles + ns;    for(n=0;n<ntriangles;n++){is[n] = triangles[n]+noldvert;}    surface->ntriangles = ns + ntriangles;  }  return 0;}/* ------------------ ResizeSurface ------------------------ */int ResizeSurface(isosurface *surfacedata, int incvert, int inctriangles, int incnorm){  int maxnum, *itemp=NULL;  float *temp=NULL;  /* resize vertex data if necessary */  maxnum = surfacedata->nvertices+incvert;  if(maxnum>surfacedata->maxvertices){    maxnum += INCPOINTS;    surfacedata->maxvertices = maxnum;    temp = surfacedata->xvert;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->xvert = temp;    temp = surfacedata->yvert;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->yvert = temp;    temp = surfacedata->zvert;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->zvert = temp;    if(surfacedata->dataflag==1){      temp = surfacedata->tvert;      if(temp==NULL){        if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;      }      else{        if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;      }      surfacedata->tvert = temp;    }    itemp = surfacedata->closestnodes;    if(itemp==NULL){      if(NewMemory((void **)&itemp,maxnum*sizeof(int))==0)return 1;    }    else{      if(ResizeMemory((void **)&itemp,maxnum*sizeof(int))==0)return 1;    }    surfacedata->closestnodes = itemp;  }  /* resize norm data if necessary */  maxnum = surfacedata->nnorm+incnorm;  if(maxnum>surfacedata->maxnorm){    maxnum += INCPOINTS;    surfacedata->maxnorm = maxnum;    temp = surfacedata->xnorm;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->xnorm = temp;    temp = surfacedata->ynorm;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->ynorm = temp;    temp = surfacedata->znorm;    if(temp==NULL){      if(NewMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    else{      if(ResizeMemory((void **)&temp,maxnum*sizeof(float))==0)return 1;    }    surfacedata->znorm = temp;  }  /* resize triangles data if necessary */  maxnum = surfacedata->ntriangles+inctriangles;  if(maxnum>surfacedata->maxtriangles){    maxnum += INCPOINTS;    surfacedata->maxtriangles = maxnum;    itemp = surfacedata->triangles;    if(itemp==NULL){      if(NewMemory((void **)&itemp,maxnum*sizeof(int))==0)return 1;    }    else{      if(ResizeMemory((void **)&itemp,maxnum*sizeof(int))==0)return 1;    }    surfacedata->triangles = itemp;  }  return 0;}/* ------------------ InitIsosurface ------------------------ */void InitIsosurface(isosurface *surfacedata, float level, float *color,int colorindex){  surfacedata->level = level;  surfacedata->color = color;  surfacedata->colorindex=colorindex;  surfacedata->defined=1;  surfacedata->nvertices=0;  surfacedata->maxvertices=-1;  surfacedata->ntriangles=0;  surfacedata->maxtriangles=-1;  surfacedata->nnorm=0;  surfacedata->maxnorm=-1;  surfacedata->normtype=0;  surfacedata->xvert=NULL;  surfacedata->yvert=NULL;  surfacedata->zvert=NULL;  surfacedata->xnorm=NULL;  surfacedata->ynorm=NULL;  surfacedata->znorm=NULL;  surfacedata->vertices=NULL;  surfacedata->tvertices=NULL;  surfacedata->rank=NULL;  surfacedata->sortedlist=NULL;  surfacedata->triangles=NULL;  surfacedata->plottype = 0;  surfacedata->closestnodes=NULL;  surfacedata->tvert=NULL;}/* ------------------ freesurface ------------------------ */void freesurface(isosurface *surfacedata){  if(surfacedata->defined==0)return;  FREEMEMORY(surfacedata->xvert);  FREEMEMORY(surfacedata->yvert);  FREEMEMORY(surfacedata->zvert);  FREEMEMORY(surfacedata->xnorm);  FREEMEMORY(surfacedata->ynorm);  FREEMEMORY(surfacedata->znorm);  FREEMEMORY(surfacedata->triangles);  FREEMEMORY(surfacedata->vertices);  FREEMEMORY(surfacedata->sortedlist);  FREEMEMORY(surfacedata->rank);  FREEMEMORY(surfacedata->closestnodes);  FREEMEMORY(surfacedata->tvert);  FREEMEMORY(surfacedata->tvertices);  surfacedata->defined=0;}void SmoothIsoSurface(isosurface *surfacedata){  int *triangles_i;  unsigned short *vertices_i,*v1,*v2,*v3;  int n,i1,i2,i3;  int ntriangles_i,nvertices_i;  float out[3],area;  float *xyznorm;  short *norm,*vertexnorm;  triangles_i = surfacedata->triangles;  vertices_i = surfacedata->vertices;  ntriangles_i = surfacedata->ntriangles;  nvertices_i = surfacedata->nvertices;  if(nvertices_i==0||ntriangles_i==0)return;  NewMemory((void **)&xyznorm,3*nvertices_i*sizeof(float));  NewMemory((void **)&norm,ntriangles_i*sizeof(short));  NewMemory((void **)&vertexnorm,3*nvertices_i*sizeof(short));  surfacedata->norm=norm;  surfacedata->vertexnorm=vertexnorm;  for(n=0;n<3*nvertices_i;n++){xyznorm[n]=0.0;}  for(n=0;n<ntriangles_i/3;n++){    i1=3*triangles_i[3*n];    i2=3*triangles_i[3*n+1];    i3=3*triangles_i[3*n+2]; /*   for(k=0;k<3;k++){ //     vv1[k]=xyzmin[k]+xyzmaxdiff*v1[k]/65535.; //     vv2[k]=xyzmin[k]+xyzmaxdiff*v2[k]/65535.; //     vv3[k]=xyzmin[k]+xyzmaxdiff*v3[k]/65535.; //   } */    v1=vertices_i+i1;    v2=vertices_i+i2;    v3=vertices_i+i3;    calcNormal2(v1,v2,v3,out,&area);    norm[3*n  ]=(short)(out[0]*32767);    norm[3*n+1]=(short)(out[1]*32767);    norm[3*n+2]=(short)(out[2]*32767);	  xyznorm[i1  ] += out[0]*area;    xyznorm[i1+1] += out[1]*area;    xyznorm[i1+2] += out[2]*area;    xyznorm[i2  ] += out[0]*area;    xyznorm[i2+1] += out[1]*area;    xyznorm[i2+2] += out[2]*area;    xyznorm[i3  ] += out[0]*area;    xyznorm[i3+1] += out[1]*area;    xyznorm[i3+2] += out[2]*area;  }  for(n=0;n<nvertices_i;n++){    ReduceToUnit(xyznorm+3*n);    vertexnorm[3*n  ]=(short)(xyznorm[3*n  ]*32767);    vertexnorm[3*n+1]=(short)(xyznorm[3*n+1]*32767);    vertexnorm[3*n+2]=(short)(xyznorm[3*n+2]*32767);  }  FREEMEMORY(xyznorm);}/* ------------------ GetNormalSurface ------------------------ */int GetNormalSurface(isosurface *surfacedata){  float out[3];  float vertx[3], verty[3], vertz[3];  float *xnorm=NULL, *ynorm=NULL, *znorm=NULL;  float *xvert=NULL, *yvert=NULL, *zvert=NULL;  int *triangles=NULL;  int ntriangles;  int nn, n, index;    ntriangles = (surfacedata->ntriangles)/3;  if(ntriangles==0)return 0;  xvert = surfacedata->xvert;  yvert = surfacedata->yvert;  zvert = surfacedata->zvert;  triangles = surfacedata->triangles;  FREEMEMORY(surfacedata->xnorm);  FREEMEMORY(surfacedata->ynorm);  FREEMEMORY(surfacedata->znorm);  if(NewMemory((void **)&surfacedata->xnorm,ntriangles*sizeof(int))==0||     NewMemory((void **)&surfacedata->ynorm,ntriangles*sizeof(int))==0||     NewMemory((void **)&surfacedata->znorm,ntriangles*sizeof(int))==0){    freesurface(surfacedata);    return 1;  }  xnorm = surfacedata->xnorm;  ynorm = surfacedata->ynorm;  znorm = surfacedata->znorm;  nn = 0;  for(n=0;n<ntriangles;n++){    index = triangles[nn++];    vertx[0] = xvert[index]; verty[0] = yvert[index]; vertz[0] = zvert[index];    index = triangles[nn++];    vertx[1] = xvert[index]; verty[1] = yvert[index]; vertz[1] = zvert[index];    index = triangles[nn++];    vertx[2] = xvert[index]; verty[2] = yvert[index]; vertz[2] = zvert[index];    calcNormal(vertx,verty,vertz,out);    xnorm[n]=out[0];    ynorm[n]=out[1];    znorm[n]=out[2];  }  return 0;}/* ------------------ DrawIsosurface ------------------------ */#ifdef pp_DRAWISOvoid DrawIsosurface(isosurface *surfacedata){  float shiny=10.;  GLfloat *color=NULL;  GLfloat specular[]={0.5,0.5,0.5,1.0};  float *xvert, *yvert, *zvert, *xnorm, *ynorm, *znorm;  float x0, y0, z0;  float x, y, z;  int *triangles, ntriangles;  int index,n,nn,nvert;  xvert = surfacedata->xvert;  yvert = surfacedata->yvert;  zvert = surfacedata->zvert;  nvert = surfacedata->nvertices;  xnorm = surfacedata->xnorm;  ynorm = surfacedata->ynorm;  znorm = surfacedata->znorm;  triangles = surfacedata->triangles;  ntriangles = surfacedata->ntriangles;  nn = 0;  color = surfacedata->color;  if(surfacedata->plottype==0){    glPushAttrib(GL_LIGHTING_BIT);#ifdef ISO_DEBUG    glLineWidth(1.0);    glBegin(GL_LINES);    nn=0;    for(n=0;n<ntriangles/3;n++){      index = triangles[nn];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);      glVertex3f(x+xnorm[n],y+ynorm[n],z+znorm[n]);      nn +=3;    }    glEnd(); #endif    nn = 0;    glEnable(GL_LIGHTING);    glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,shiny);    glBegin(GL_TRIANGLES);    glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,color);    glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,specular);    for (n = 0; n < ntriangles/3; n++) {      glNormal3f(xnorm[n],ynorm[n],znorm[n]);      index = triangles[nn++];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);      index = triangles[nn++];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);      index = triangles[nn++];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);    }    glEnd();    glPopAttrib();  }  if(surfacedata->plottype==1){    glColor3fv(color);    glBegin(GL_LINES);    for (n = 0; n < ntriangles/3; n++) {      index = triangles[nn++];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);      x0 = x; y0 = y; z0 = z;      index = triangles[nn++];      x = xvert[index]; y = yvert[index]; z = zvert[index];      glVertex3f(x,y,z);      glVertex3f(x,y,z);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一线二线三线视频| 日本不卡视频在线| 一区二区三区色| 日韩影院免费视频| 亚洲第一二三四区| 捆绑调教美女网站视频一区| 国产91精品一区二区麻豆网站| 99re热这里只有精品视频| 欧美性猛交一区二区三区精品| 91精品久久久久久久久99蜜臂| 久久精品人人做人人综合| 欧美成人a∨高清免费观看| 国产精品国产自产拍高清av| 五月婷婷综合激情| 成人综合在线视频| 欧美区在线观看| 国产精品国产三级国产aⅴ无密码| 中文字幕亚洲不卡| 精品中文av资源站在线观看| 99国产精品久久久久久久久久 | 欧美伊人精品成人久久综合97| 欧美日韩黄色影视| 精品1区2区在线观看| 一区二区视频在线看| 精品一二三四区| 欧美日韩国产影片| 中文字幕一区在线观看| 美腿丝袜亚洲色图| 欧美中文字幕一二三区视频| 欧美mv日韩mv| 丝袜亚洲精品中文字幕一区| 成人a级免费电影| 精品99一区二区三区| 日韩激情在线观看| 色香蕉成人二区免费| 久久久99久久精品欧美| 日本sm残虐另类| 欧美三区免费完整视频在线观看| 中文一区在线播放| 国产麻豆精品久久一二三| 欧美一区二区三区在线看| 亚洲日本在线a| 成人久久视频在线观看| 久久久久久久久免费| 毛片av中文字幕一区二区| 在线观看成人小视频| 亚洲精品乱码久久久久久日本蜜臀| 激情久久五月天| 日韩欧美国产1| 蜜桃av一区二区| 日韩欧美精品三级| 九九九久久久精品| 久久久久久久久久久电影| 国产一区二区三区免费看| 91精品黄色片免费大全| 欧美aaaaa成人免费观看视频| 欧美性三三影院| 爽好久久久欧美精品| 欧美一二三四区在线| 日本中文字幕一区二区视频| 91偷拍与自偷拍精品| 亚洲激情av在线| 欧美三级日韩三级| 肉肉av福利一精品导航| 日韩欧美美女一区二区三区| 韩国三级在线一区| 精品国产a毛片| 懂色av中文字幕一区二区三区| 欧美高清在线精品一区| 成人av免费观看| 亚洲激情av在线| 91影视在线播放| 婷婷中文字幕综合| 精品av久久707| 97精品视频在线观看自产线路二| 自拍偷拍国产亚洲| 欧美日高清视频| 午夜精品在线视频一区| 日韩三区在线观看| 成人黄色a**站在线观看| 亚洲中国最大av网站| 欧美一区二区精品在线| 国产一区二区导航在线播放| 综合网在线视频| 欧美艳星brazzers| 激情小说欧美图片| 亚洲色图一区二区三区| 欧美精品一级二级| 国产成人av电影| 亚洲成人三级小说| 久久婷婷国产综合精品青草| 91在线免费看| 久久超碰97中文字幕| 中文字幕在线一区二区三区| 欧美色老头old∨ideo| 日韩成人一区二区| 亚洲欧美福利一区二区| 欧美mv和日韩mv国产网站| 91蜜桃视频在线| 国产一区二区久久| 亚洲一区二区三区自拍| 国产日韩影视精品| 91麻豆精品国产综合久久久久久| 大美女一区二区三区| 性欧美疯狂xxxxbbbb| 精品欧美一区二区三区精品久久| 色悠久久久久综合欧美99| 国产盗摄女厕一区二区三区| 午夜精品aaa| 亚洲精品国久久99热| 久久精品日产第一区二区三区高清版| 欧美精品视频www在线观看| 国产又粗又猛又爽又黄91精品| 日韩在线一区二区| 亚洲第一激情av| 亚洲最大成人网4388xx| 国产精品理论片| 国产欧美精品一区二区色综合朱莉| 欧美三级韩国三级日本一级| 91视频观看视频| 成人毛片在线观看| 国产成人在线观看免费网站| 狠狠色丁香婷综合久久| 天堂午夜影视日韩欧美一区二区| 一区二区日韩电影| 一区二区成人在线| 亚洲三级视频在线观看| 亚洲免费伊人电影| 国产精品国产馆在线真实露脸 | 91欧美激情一区二区三区成人| 国产成人精品免费视频网站| 高清不卡一区二区| 99热在这里有精品免费| 91丨九色porny丨蝌蚪| 91色婷婷久久久久合中文| 在线日韩一区二区| 7777精品伊人久久久大香线蕉的 | 欧美经典一区二区| 成人免费在线播放视频| 亚洲激情网站免费观看| 日韩激情在线观看| 国产精品一二三区在线| 色综合天天做天天爱| 欧美日韩国产大片| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧洲av在线| 日韩精品午夜视频| 成人深夜在线观看| 欧美日韩国产一级二级| 久久婷婷成人综合色| 亚洲美女视频在线观看| 全国精品久久少妇| 成人久久18免费网站麻豆| 欧美高清视频不卡网| 欧美国产日产图区| 天天av天天翘天天综合网 | 日韩中文字幕亚洲一区二区va在线 | 色呦呦日韩精品| 精品国产青草久久久久福利| 亚洲色欲色欲www| 国内精品视频666| 欧美三级电影在线观看| 国产欧美一区二区在线| 日韩成人精品在线| 白白色 亚洲乱淫| 精品美女一区二区| 午夜精品久久久久久久久久久 | 国产亚洲人成网站| 亚洲超碰97人人做人人爱| 成人午夜视频福利| 欧美不卡一区二区三区四区| 亚洲欧美色图小说| 国产成人亚洲综合a∨婷婷图片| 欧美日韩精品欧美日韩精品| 国产精品全国免费观看高清 | av电影一区二区| 久久蜜臀精品av| 日本va欧美va瓶| 欧美视频自拍偷拍| 中文字幕亚洲电影| 国产jizzjizz一区二区| 精品国产一区二区三区久久久蜜月| 亚洲自拍另类综合| 色视频欧美一区二区三区| 国产精品的网站| 国产suv一区二区三区88区| 欧美一级国产精品| 五月激情综合网| 欧美三级日韩三级| 亚洲无人区一区| 日本高清免费不卡视频| 中文字幕日韩一区二区| 成人免费黄色在线| 国产精品女主播在线观看| 丰满放荡岳乱妇91ww| 欧美激情一区二区三区四区| 粗大黑人巨茎大战欧美成人| 久久精品免费在线观看| 国产91色综合久久免费分享| 国产欧美日本一区视频|