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;
	}
Exemple #3
0
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");
    }
	
}