bool HeightmapCollisionShape::drawWireFrame(DebugLines *wire, const Ogre::Vector3 &pos = Ogre::Vector3::ZERO, const Ogre::Quaternion &quat= Ogre::Quaternion::IDENTITY) const { btHeightfieldTerrainShape* pHeightShape = static_cast<btHeightfieldTerrainShape*>(mShape); btTransform bt; bt.setIdentity(); btVector3 colour(255.0, 255.0, 255.0); DebugHelper ddraw(wire); DebugTriangleDrawCallback cb(&ddraw, bt, colour); btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30)); btVector3 aabbMin(btScalar(-1e30),btScalar(-1e30),btScalar(-1e30)); pHeightShape->processAllTriangles(&cb, aabbMin, aabbMax); return true; }
bool HeightmapCollisionShape::drawWireFrame(DebugLines *wire, const Ogre::Vector3 &pos, const Ogre::Quaternion &quat) const { btHeightfieldTerrainShape *pHeightShape = static_cast<btHeightfieldTerrainShape *>(mShape); btTransform bt; bt.setIdentity(); const btVector3 colour(255.0, 255.0, 255.0); DebugHelper ddraw(wire); DebugTriangleDrawCallback cb(&ddraw, bt, colour); const btScalar max(BT_LARGE_FLOAT); const btScalar min(-BT_LARGE_FLOAT); const btVector3 aabbMax(max, max, max); const btVector3 aabbMin(min, min, min); pHeightShape->processAllTriangles(&cb, aabbMin, aabbMax); return true; }
static void test_stfun(){ rand_t rstat; int seed=4; double r0=0.2; double dx=1./16; long N=32; long nx=N; long ny=N; long nframe=500; seed_rand(&rstat, seed); if(L0<9000){ dmat *rr=dlinspace(0, N*dx, N); dmat *covvk=turbcov(rr, sqrt(2)*N*dx, r0, L0); writebin(covvk, "cov_vk"); dfree(rr); dfree(covvk); } /* return; */ { map_t *atm=mapnew(nx+1, ny+1, dx, dx,NULL); stfun_t *data=stfun_init(nx, ny, NULL); zfarr *save=zfarr_init(nframe, 1, "fractal_atm.bin"); for(long i=0; i<nframe; i++){ for(long j=0; j<(nx+1)*(ny+1); j++){ atm->p[j]=randn(&rstat); } fractal_do((dmat*)atm, dx, r0,L0,ninit); stfun_push(data, (dmat*)atm); zfarr_dmat(save, i, (dmat*)atm); if(i%100==0) info("%ld of %ld\n", i, nframe); } zfarr_close(save); dmat *st=stfun_finalize(data); writebin(st, "stfun_fractal.bin"); ddraw("fractal", st, NULL,NULL, "Atmosphere","x","y","stfun"); } /*exit(0); */ { stfun_t *data=stfun_init(nx, ny, NULL); dmat *spect=turbpsd(nx, ny, dx, r0, 100, 0, 0.5); cmat *atm=cnew(nx, ny); //cfft2plan(atm, -1); dmat *atmr=dnew(atm->nx, atm->ny); dmat *atmi=dnew(atm->nx, atm->ny); spect->p[0]=0; for(long ii=0; ii<nframe; ii+=2){ for(long i=0; i<atm->nx*atm->ny; i++){ atm->p[i]=COMPLEX(randn(&rstat), randn(&rstat))*spect->p[i]; } cfft2(atm, -1); for(long i=0; i<atm->nx*atm->ny; i++){ atmr->p[i]=creal(atm->p[i]); atmi->p[i]=cimag(atm->p[i]); } stfun_push(data, atmr); stfun_push(data, atmi); if(ii%100==0) info("%ld of %ld\n", ii, nframe); } dmat *st=stfun_finalize(data); writebin(st, "stfun_fft.bin"); ddraw("fft", st, NULL,NULL, "Atmosphere","x","y","stfun"); } }