您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FixedDiv函数代码示例

51自学网 2021-06-01 20:47:21
  C++
这篇教程C++ FixedDiv函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FixedDiv函数的典型用法代码示例。如果您正苦于以下问题:C++ FixedDiv函数的具体用法?C++ FixedDiv怎么用?C++ FixedDiv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FixedDiv函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: FixedHypot

fixed_t FixedHypot(fixed_t x, fixed_t y){#ifdef HAVE_HYPOT	const float fx = FIXED_TO_FLOAT(x);	const float fy = FIXED_TO_FLOAT(y);	float fz;#ifdef HAVE_HYPOTF	fz = hypotf(fx, fy);#else	fz = (float)hypot(fx, fy);#endif	return FLOAT_TO_FIXED(fz);#else // !HAVE_HYPOT	fixed_t ax, yx, yx2, yx1;	if (abs(y) > abs(x)) // |y|>|x|	{		ax = abs(y); // |y| => ax		yx = FixedDiv(x, y); // (x/y)	}	else // |x|>|y|	{		ax = abs(x); // |x| => ax		yx = FixedDiv(y, x); // (x/y)	}	yx2 = FixedMul(yx, yx); // (x/y)^2	yx1 = FixedSqrt(1+FRACUNIT + yx2); // (1 + (x/y)^2)^1/2	return FixedMul(ax, yx1); // |x|*((1 + (x/y)^2)^1/2)#endif}
开发者ID:Pupswoof117,项目名称:SRB2-Public,代码行数:29,


示例2: AM_addMark

/*void AM_addMark(void){  markpoints[markpointnum].x = m_x + m_w/2;  markpoints[markpointnum].y = m_y + m_h/2;  markpointnum = (markpointnum + 1) % AM_NUMMARKPOINTS;}*/void AM_findMinMaxBoundaries(void){    int i;    fixed_t a, b;    min_x = min_y = INT_MAX;    max_x = max_y = -INT_MAX;    for (i = 0; i < numvertexes; i++)    {        if (vertexes[i].x < min_x)            min_x = vertexes[i].x;        else if (vertexes[i].x > max_x)            max_x = vertexes[i].x;        if (vertexes[i].y < min_y)            min_y = vertexes[i].y;        else if (vertexes[i].y > max_y)            max_y = vertexes[i].y;    }    max_w = max_x - min_x;    max_h = max_y - min_y;    min_w = 2 * PLAYERRADIUS;    min_h = 2 * PLAYERRADIUS;    a = FixedDiv(f_w << FRACBITS, max_w);    b = FixedDiv(f_h << FRACBITS, max_h);    min_scale_mtof = a < b ? a : b;    max_scale_mtof = FixedDiv(f_h << FRACBITS, 2 * PLAYERRADIUS);}
开发者ID:Azarien,项目名称:chocolate-doom,代码行数:39,


示例3: FixedDiv

vector_t *FV_DivideEx(const vector_t *a_i, fixed_t a_c, vector_t *a_o){	a_o->x = FixedDiv(a_i->x, a_c);	a_o->y = FixedDiv(a_i->y, a_c);	a_o->z = FixedDiv(a_i->z, a_c);	return a_o;}
开发者ID:Pupswoof117,项目名称:SRB2-Public,代码行数:7,


示例4: EV_BuildPillar

int EV_BuildPillar(line_t *line, byte *args, boolean crush){	int secnum;	sector_t *sec;	pillar_t *pillar;	int newHeight;	int rtn;	rtn = 0;	secnum = -1;	while((secnum = P_FindSectorFromTag(args[0], secnum)) >= 0)	{		sec = &sectors[secnum];		if(sec->specialdata)			continue; // already moving		if(sec->floorheight == sec->ceilingheight)		{ // pillar is already closed			continue;		}		rtn = 1;		if(!args[2])		{			newHeight = sec->floorheight+				((sec->ceilingheight-sec->floorheight)/2);		}		else		{			newHeight = sec->floorheight+(args[2]<<FRACBITS);		}		pillar = Z_Malloc(sizeof(*pillar), PU_LEVSPEC, 0);		sec->specialdata = pillar;		P_AddThinker(&pillar->thinker);		pillar->thinker.function = T_BuildPillar;		pillar->sector = sec;		if(!args[2])		{			pillar->ceilingSpeed = pillar->floorSpeed = args[1]*(FRACUNIT/8);		}		else if(newHeight-sec->floorheight > sec->ceilingheight-newHeight)		{			pillar->floorSpeed = args[1]*(FRACUNIT/8);			pillar->ceilingSpeed = FixedMul(sec->ceilingheight-newHeight,				FixedDiv(pillar->floorSpeed, newHeight-sec->floorheight));		}		else		{			pillar->ceilingSpeed = args[1]*(FRACUNIT/8);			pillar->floorSpeed = FixedMul(newHeight-sec->floorheight,				FixedDiv(pillar->ceilingSpeed, sec->ceilingheight-newHeight));		}		pillar->floordest = newHeight;		pillar->ceilingdest = newHeight;		pillar->direction = 1;		pillar->crush = crush*args[3];		SN_StartSequence((mobj_t *)&pillar->sector->soundorg, 			SEQ_PLATFORM+pillar->sector->seqType);	}	return rtn;}
开发者ID:shovelmachine,项目名称:hexentouch,代码行数:60,


示例5: R_InitSkyMap

void R_InitSkyMap (){	if (textureheight == NULL)		return;	if (textureheight[skytexture] <= (128 << FRACBITS))	{                skytexturemid = 100*FRACUNIT;                skystretch = (r_stretchsky && allowfreelook);	}	else	{		skytexturemid = 100*FRACUNIT;		skystretch = 0;	}	skyheight = textureheight[skytexture] << skystretch;	if (viewwidth && viewheight)	{		skyiscale = (200*FRACUNIT) / (((freelookviewheight<<detailxshift) * viewwidth) / (viewwidth<<detailxshift));		skyscale = ((((freelookviewheight<<detailxshift) * viewwidth) / (viewwidth<<detailxshift)) << FRACBITS) /(200);		skyiscale = FixedMul (skyiscale, FixedDiv (clipangle, ANG45));		skyscale = FixedMul (skyscale, FixedDiv (ANG45, clipangle));	}	// The sky map is 256*128*4 maps.	skyshift = 22+skystretch-16;	if (texturewidthmask[skytexture] >= 256*2-1)		skyshift -= skystretch;}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:31,


示例6: R_ClearPlanes

void R_ClearPlanes(void){    int i;    angle_t angle;//// opening / clipping determination//          for (i = 0; i < viewwidth; i++)    {        floorclip[i] = viewheight;        ceilingclip[i] = -1;    }    lastvisplane = visplanes;    lastopening = openings;//// texture calculation//    memset(cachedheight, 0, sizeof(cachedheight));    angle = (viewangle - ANG90) >> ANGLETOFINESHIFT;    // left to right mapping    // scale will be unit scale at SCREENWIDTH/2 distance    basexscale = FixedDiv(finecosine[angle], centerxfrac);    baseyscale = -FixedDiv(finesine[angle], centerxfrac);}
开发者ID:fabiangreffrath,项目名称:crispy-doom,代码行数:27,


示例7: R_BlastSpriteColumn

void R_BlastSpriteColumn(void (*drawfunc)()){	tallpost_t* post = dcol.post;	while (!post->end())	{		// calculate unclipped screen coordinates for post		int topscreen = sprtopscreen + spryscale * post->topdelta + 1;		dcol.yl = (topscreen + FRACUNIT) >> FRACBITS;		dcol.yh = (topscreen + spryscale * post->length) >> FRACBITS;		dcol.yl = MAX(dcol.yl, mceilingclip[dcol.x] + 1);		dcol.yh = MIN(dcol.yh, mfloorclip[dcol.x] - 1);		dcol.texturefrac = dcol.texturemid - (post->topdelta << FRACBITS)			+ (dcol.yl * dcol.iscale) - FixedMul(centeryfrac - FRACUNIT, dcol.iscale);		if (dcol.texturefrac < 0)		{			int cnt = (FixedDiv(-dcol.texturefrac, dcol.iscale) + FRACUNIT - 1) >> FRACBITS;			dcol.yl += cnt;			dcol.texturefrac += cnt * dcol.iscale;		}		const fixed_t endfrac = dcol.texturefrac + (dcol.yh - dcol.yl) * dcol.iscale;		const fixed_t maxfrac = post->length << FRACBITS;				if (endfrac >= maxfrac)		{			int cnt = (FixedDiv(endfrac - maxfrac - 1, dcol.iscale) + FRACUNIT - 1) >> FRACBITS;			dcol.yh -= cnt;		}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:33,


示例8: FixedDiv

void Scene::showSprites() {	// TODO: This is all experimental code, it needs heavy restructuring	// and cleanup	// taken from set_walker_scaling() in adv_walk.cpp. A proper implementation will need	// to store these in global variables	int minScaling = FixedDiv(_sceneResources->backScale << 16, 100 << 16);	int maxScaling = FixedDiv(_sceneResources->frontScale << 16, 100 << 16);	int scaler;	_vm->_actor->setWalkerDirection(kFacingSouthEast);	//_vm->_actor->setWalkerPalette();	// taken from set_walker_scaling() in adv_walk.cpp	if (_sceneResources->frontY == _sceneResources->backY)		scaler = 0;	else		scaler = FixedDiv(maxScaling - minScaling,				 (_sceneResources->frontY << 16) - (_sceneResources->backY << 16));	// FIXME: For now, we (incorrectly) scale the walker to 50% of the scene's max scaling	_vm->_actor->setWalkerScaling(scaler / 2);	// Test code to display the protagonist	_vm->_actor->placeWalkerSpriteAt(0, 320, 200);	// Test code to display scene sprites	// TODO}
开发者ID:Templier,项目名称:scummvm-test,代码行数:28,


示例9: InitializeFade

static void InitializeFade(boolean fadeIn){	unsigned i;	Palette = Z_Malloc(768*sizeof(fixed_t), PU_STATIC, 0);	PaletteDelta = Z_Malloc(768*sizeof(fixed_t), PU_STATIC, 0);	RealPalette = Z_Malloc(768*sizeof(byte), PU_STATIC, 0);	if(fadeIn)	{		memset(RealPalette, 0, 768*sizeof(byte));		for(i = 0; i < 768; i++)		{			Palette[i] = 0;			PaletteDelta[i] = FixedDiv((*((byte *)W_CacheLumpName("playpal", 				PU_CACHE)+i))<<FRACBITS, 70*FRACUNIT);		}	}	else	{		for(i = 0; i < 768; i++)		{			RealPalette[i] = *((byte *)W_CacheLumpName("playpal", PU_CACHE)+i);			Palette[i] = RealPalette[i]<<FRACBITS;			PaletteDelta[i] = FixedDiv(Palette[i], -70*FRACUNIT);		}	}	I_SetPalette(RealPalette);}
开发者ID:BruceJawn,项目名称:flash-doom,代码行数:29,


示例10: FV_NormalizeEx

// Also returns the magnitudefixed_t FV_NormalizeEx(const vector_t *a_normal, vector_t *a_o){	fixed_t magnitude = FV_Magnitude(a_normal);	a_o->x = FixedDiv(a_normal->x, magnitude);	a_o->y = FixedDiv(a_normal->y, magnitude);	a_o->z = FixedDiv(a_normal->z, magnitude);	return magnitude;}
开发者ID:Pupswoof117,项目名称:SRB2-Public,代码行数:9,


示例11: PTR_chaseTraverse

//// PTR_chaseTraverse//// go til you hit a wall// set the chasecam target x and ys if you hit one// originally based on the shooting traverse function in p_maputl.c//static bool PTR_chaseTraverse(intercept_t *in){   fixed_t dist, frac;   subsector_t *ss;   int x, y;   int z;   sector_t *othersector;   if(in->isaline)   {      line_t *li = in->d.line;            dist = FixedMul(trace.attackrange, in->frac);      frac = in->frac - FixedDiv(12*FRACUNIT, trace.attackrange);            // hit line      // position a bit closer            x = trace.dl.x + FixedMul(trace.dl.dx, frac);      y = trace.dl.y + FixedMul(trace.dl.dy, frac);      // ioanch 20160225: portal lines are currently not crossed      if(li->flags & ML_TWOSIDED && !(li->pflags & PS_PASSABLE))      {  // crosses a two sided line         // sf: find which side it hit                  ss = R_PointInSubsector (x, y);                  othersector = li->backsector;                  if(ss->sector==li->backsector)      // other side            othersector = li->frontsector;         // interpolate, find z at the point of intersection                  z = zi(dist, trace.attackrange, targetz, playermobj->z+28*FRACUNIT);                  // found which side, check for intersections         if((li->flags & ML_BLOCKING) ||             (othersector->floorheight>z) || (othersector->ceilingheight<z)            || (othersector->ceilingheight-othersector->floorheight                < 40*FRACUNIT));          // hit         else         {            return true;    // continue         }      }      targetx = x;        // point the new chasecam target at the intersection      targety = y;      targetz = zi(dist, trace.attackrange, targetz, playermobj->z+28*FRACUNIT);            // don't go any farther            return false;   }      return true;}
开发者ID:Blastfrog,项目名称:eternity,代码行数:67,


示例12: FV_PlaneIntersection

//// PlaneIntersection//// Returns the distance from// rOrigin to where the ray// intersects the plane. Assumes// you already know it intersects// the plane.//fixed_t FV_PlaneIntersection(const vector_t *pOrigin, const vector_t *pNormal, const vector_t *rOrigin, const vector_t *rVector){  fixed_t d = -(FV_Dot(pNormal, pOrigin));  fixed_t number = FV_Dot(pNormal,rOrigin) + d;  fixed_t denom = FV_Dot(pNormal,rVector);  return -FixedDiv(number, denom);}
开发者ID:Pupswoof117,项目名称:SRB2-Public,代码行数:16,


示例13: R_InitLightTables

void R_InitLightTables (void){  int i;  // killough 4/4/98: dynamic colormaps  c_zlight = malloc(sizeof(*c_zlight) * numcolormaps);  // Calculate the light levels to use  //  for each level / distance combination.  for (i=0; i< LIGHTLEVELS; i++)    {      int j, startmap = ((LIGHTLEVELS-1-i)*2)*NUMCOLORMAPS/LIGHTLEVELS;      for (j=0; j<MAXLIGHTZ; j++)        {    // CPhipps - use 320 here instead of SCREENWIDTH, otherwise hires is    //           brighter than normal res          int scale = FixedDiv ((320/2*FRACUNIT), (j+1)<<LIGHTZSHIFT);          int t, level = startmap - (scale >>= LIGHTSCALESHIFT)/DISTMAP;          if (level < 0)            level = 0;          else            if (level >= NUMCOLORMAPS)              level = NUMCOLORMAPS-1;          // killough 3/20/98: Initialize multiple colormaps          level *= 256;          for (t=0; t<numcolormaps; t++)         // killough 4/4/98            c_zlight[t][i][j] = colormaps[t] + level;        }    }}
开发者ID:WinterMute,项目名称:dsdoom,代码行数:32,


示例14: AM_LevelInit

void AM_LevelInit(void){  leveljuststarted = 0;  f_x = f_y = 0;  f_w = finit_width;  f_h = finit_height;	mapxstart = mapystart = 0;//  AM_clearMarks();  AM_findMinMaxBoundaries();  scale_mtof = FixedDiv(min_scale_mtof, (int) (0.7*FRACUNIT));  if (scale_mtof > max_scale_mtof) scale_mtof = min_scale_mtof;  scale_ftom = FixedDiv(FRACUNIT, scale_mtof);}
开发者ID:BruceJawn,项目名称:flash-doom,代码行数:17,


示例15: FixedDiv

//// AM_getIslope()//// Calculates the slope and slope according to the x-axis of a line// segment in map coordinates (with the upright y-axis n' all) so// that it can be used with the brain-dead drawing stuff.//// Passed the line slope is desired for and an islope_t structure for return// Returns nothing//void AM_getIslope( mline_t*  ml,  islope_t* is ){  int dx, dy;  dy = ml->a.y - ml->b.y;  dx = ml->b.x - ml->a.x;  if (!dy)    is->islp = (dx<0?-MAXINT:MAXINT);  else    is->islp = FixedDiv(dx, dy);  if (!dx)    is->slp = (dy<0?-MAXINT:MAXINT);  else    is->slp = FixedDiv(dy, dx);}
开发者ID:fragglet,项目名称:mbf,代码行数:27,


示例16: AM_LevelInit

//// AM_LevelInit()//// Initialize the automap at the start of a new level// should be called at the start of every level//// Passed nothing, returns nothing// Affects automap's global variables//void AM_LevelInit(void){  f_x = f_y = 0;  // killough 2/7/98: get rid of finit_ vars  // to allow runtime setting of width/height  //  // killough 11/98: ... finally add hires support :)  f_w = (SCREENWIDTH) << hires;  f_h = (SCREENHEIGHT-ST_HEIGHT) << hires;  AM_findMinMaxBoundaries();  scale_mtof = FixedDiv(min_scale_mtof, (int) (0.7*FRACUNIT));  if (scale_mtof > max_scale_mtof)    scale_mtof = min_scale_mtof;  scale_ftom = FixedDiv(FRACUNIT, scale_mtof);}
开发者ID:fragglet,项目名称:mbf,代码行数:27,


示例17: R_CopySubimage

//// R_CopySubimage//// Copies a portion of source_texture and draws it into dest_texture.// The source subimage is scaled to fit the dimensions of the destination// texture.//// Note: no clipping is performed so it is possible to read past the// end of the source texture.//void R_CopySubimage(Texture* dest_texture, const Texture* source_texture,	int dx1, int dy1, int dx2, int dy2,	int sx1, int sy1, int sx2, int sy2){	const int destwidth = dx2 - dx1 + 1; 	const int destheight = dy2 - dy1 + 1;	const int sourcewidth = sx2 - sx1 + 1;	const int sourceheight = sy2 - sy1 + 1;	const fixed_t xstep = FixedDiv(sourcewidth << FRACBITS, destwidth << FRACBITS) + 1;	const fixed_t ystep = FixedDiv(sourceheight << FRACBITS, destheight << FRACBITS) + 1;	int dest_offset = dx1 * dest_texture->getHeight() + dy1;	byte* dest = dest_texture->getData() + dest_offset; 	byte* dest_mask = dest_texture->getMaskData() + dest_offset; 	fixed_t xfrac = 0;	for (int xcount = destwidth; xcount > 0; xcount--)	{		int source_offset = (sx1 + (xfrac >> FRACBITS)) * source_texture->getHeight() + sy1;		const byte* source = source_texture->getData() + source_offset;		const byte* source_mask = source_texture->getMaskData() + source_offset;		fixed_t yfrac = 0;		for (int ycount = destheight; ycount > 0; ycount--)		{			*dest++ = source[yfrac >> FRACBITS];				*dest_mask++ = source_mask[yfrac >> FRACBITS];				yfrac += ystep;		}		dest += dest_texture->getHeight() - destheight;		dest_mask += dest_texture->getHeight() - destheight; 		xfrac += xstep;	}	// copy the source texture's offset info	int xoffs = FixedDiv(source_texture->getOffsetX() << FRACBITS, xstep) >> FRACBITS;	int yoffs = FixedDiv(source_texture->getOffsetY() << FRACBITS, ystep) >> FRACBITS;	dest_texture->setOffsetX(xoffs);	dest_texture->setOffsetY(yoffs);}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:54,


示例18: R_InitTextureMapping

static void R_InitTextureMapping (void){  register int i,x;  fixed_t focallength;  // Use tangent table to generate viewangletox:  //  viewangletox will give the next greatest x  //  after the view angle.  //  // Calc focallength  //  so FIELDOFVIEW angles covers SCREENWIDTH.  focallength = FixedDiv(centerxfrac, finetangent[FINEANGLES/4+FIELDOFVIEW/2]);  for (i=0 ; i<FINEANGLES/2 ; i++)    {      int t;      if (finetangent[i] > FRACUNIT*2)        t = -1;      else        if (finetangent[i] < -FRACUNIT*2)          t = viewwidth+1;      else        {          t = FixedMul(finetangent[i], focallength);          t = (centerxfrac - t + FRACUNIT-1) >> FRACBITS;          if (t < -1)            t = -1;          else            if (t > viewwidth+1)              t = viewwidth+1;        }      viewangletox[i] = t;    }  // Scan viewangletox[] to generate xtoviewangle[]:  //  xtoviewangle will give the smallest view angle  //  that maps to x.  for (x=0; x<=viewwidth; x++)    {      for (i=0; viewangletox[i] > x; i++)        ;      xtoviewangle[x] = (i<<ANGLETOFINESHIFT)-ANG90;    }  // Take out the fencepost cases from viewangletox.  for (i=0; i<FINEANGLES/2; i++)    if (viewangletox[i] == -1)      viewangletox[i] = 0;    else      if (viewangletox[i] == viewwidth+1)        viewangletox[i] = viewwidth;  clipangle = xtoviewangle[0];}
开发者ID:WinterMute,项目名称:dsdoom,代码行数:56,


示例19: sqrt

function int sqrt(int number){  if (number == 1.0) return 1.0;  if (number <= 0) return 0;  int val = 150.0;  for (int i=0; i<15; i++)    val = (val + FixedDiv(number, val)) >> 1;  return val;}
开发者ID:IjonTichy,项目名称:JKEMod,代码行数:10,


示例20: R_ScaleFromGlobalAngle

static fixed_t R_ScaleFromGlobalAngle(angle_t visangle){  int     anglea = ANG90 + (visangle-viewangle);  int     angleb = ANG90 + (visangle-rw_normalangle);  int     den = FixedMul(rw_distance, finesine[anglea>>ANGLETOFINESHIFT]);// proff 11/06/98: Changed for high-res  fixed_t num = FixedMul(projectiony, finesine[angleb>>ANGLETOFINESHIFT]);  return den > num>>16 ? (num = FixedDiv(num, den)) > 64*FRACUNIT ?    64*FRACUNIT : num < 256 ? 256 : num : 64*FRACUNIT;}
开发者ID:Krazygamr,项目名称:D-Touch,代码行数:10,


示例21: R_InitTextureMapping

//// R_InitTextureMapping//void R_InitTextureMapping(void){    int     i;    int     x;    int     t;    fixed_t focallength;    // Use tangent table to generate viewangletox:    //  viewangletox will give the next greatest x    //  after the view angle.    const fixed_t hitan = finetangent[FINEANGLES / 4 + FIELDOFVIEW / 2];    const fixed_t lotan = finetangent[FINEANGLES / 4 - FIELDOFVIEW / 2];    const int     highend = viewwidth + 1;    // Calc focallength    //  so FIELDOFVIEW angles covers SCREENWIDTH.    focallength = FixedDiv(centerxfrac, hitan);    for (i = 0; i < FINEANGLES / 2; i++)    {        fixed_t tangent = finetangent[i];        if (tangent > hitan)            t = -1;        else if (tangent < lotan)            t = highend;        else        {            t = (centerxfrac - FixedMul(tangent, focallength) + FRACUNIT - 1) >> FRACBITS;            t = MAX(-1, (MIN(t, highend)));        }        viewangletox[i] = t;    }    // Scan viewangletox[] to generate xtoviewangle[]:    //  xtoviewangle will give the smallest view angle    //  that maps to x.    for (x = 0; x <= viewwidth; x++)    {        for (i = 0; viewangletox[i] > x; i++);        xtoviewangle[x] = (i << ANGLETOFINESHIFT) - ANG90;    }    // Take out the fencepost cases from viewangletox.    for (i = 0; i < FINEANGLES / 2; i++)    {        if (viewangletox[i] == -1)            viewangletox[i] = 0;        else if (viewangletox[i] == highend)            viewangletox[i]--;    }    clipangle = xtoviewangle[0];}
开发者ID:arneolavhal,项目名称:doomretro,代码行数:58,


示例22: AM_restoreScaleAndLoc

void AM_restoreScaleAndLoc(void){  m_w = old_m_w;  m_h = old_m_h;  if (!followplayer)  {    m_x = old_m_x;    m_y = old_m_y;  } else {    m_x = plr->mo->x - m_w/2;    m_y = plr->mo->y - m_h/2;  }  m_x2 = m_x + m_w;  m_y2 = m_y + m_h;  // Change the scaling multipliers  scale_mtof = FixedDiv(f_w<<FRACBITS, m_w);  scale_ftom = FixedDiv(FRACUNIT, scale_mtof);}
开发者ID:BruceJawn,项目名称:flash-doom,代码行数:20,


示例23: AM_changeWindowScale

void AM_changeWindowScale(void){  // Change the scaling multipliers  scale_mtof = FixedMul(scale_mtof, mtof_zoommul);  scale_ftom = FixedDiv(FRACUNIT, scale_mtof);  if (scale_mtof < min_scale_mtof) AM_minOutWindowScale();  else if (scale_mtof > max_scale_mtof) AM_maxOutWindowScale();  else AM_activateNewScale();}
开发者ID:BruceJawn,项目名称:flash-doom,代码行数:11,


示例24: R_DrawMaskedSpriteColumn

static void R_DrawMaskedSpriteColumn(column_t *column, int baseclip){    while (column->topdelta != 0xff)    {        // calculate unclipped screen coordinates for post        int     topscreen = sprtopscreen + spryscale * column->topdelta + 1;        dc_yl = MAX((topscreen + FRACUNIT) >> FRACBITS, mceilingclip[dc_x] + 1);        dc_yh = MIN((topscreen + spryscale * column->length) >> FRACBITS, mfloorclip[dc_x] - 1);        if (baseclip != -1)            dc_yh = MIN(baseclip, dc_yh);        fuzzclip = baseclip;        dc_texturefrac = dc_texturemid - (column->topdelta << FRACBITS) +            FixedMul((dc_yl - centery) << FRACBITS, dc_iscale);        if (dc_texturefrac < 0)        {            int cnt = (FixedDiv(-dc_texturefrac, dc_iscale) + FRACUNIT - 1) >> FRACBITS;            dc_yl += cnt;            dc_texturefrac += cnt * dc_iscale;        }        {            const fixed_t       endfrac = dc_texturefrac + (dc_yh - dc_yl) * dc_iscale;            const fixed_t       maxfrac = column->length << FRACBITS;            if (endfrac >= maxfrac)                dc_yh -= (FixedDiv(endfrac - maxfrac - 1, dc_iscale) + FRACUNIT - 1) >> FRACBITS;        }        if (dc_yl <= dc_yh && dc_yh < viewheight)        {            dc_source = (byte *)column + 3;            colfunc();        }        column = (column_t *)((byte *)column + column->length + 4);    }
开发者ID:AlexMax,项目名称:doomretro,代码行数:40,


示例25: R_DrawMaskedColumn

void R_DrawMaskedColumn(tallpost_t *post){    while (!post->end())    {        if (post->length == 0)        {            post = post->next();            continue;        }        // calculate unclipped screen coordinates for post        int topscreen = sprtopscreen + spryscale * post->topdelta + 1;        dc_yl = (topscreen + FRACUNIT) >> FRACBITS;        dc_yh = (topscreen + spryscale * post->length) >> FRACBITS;        if (dc_yh >= mfloorclip[dc_x])            dc_yh = mfloorclip[dc_x] - 1;        if (dc_yl <= mceilingclip[dc_x])            dc_yl = mceilingclip[dc_x] + 1;        dc_texturefrac = dc_texturemid - (post->topdelta << FRACBITS)                         + (dc_yl*dc_iscale) - FixedMul(centeryfrac-FRACUNIT, dc_iscale);        if (dc_texturefrac < 0)        {            int cnt = (FixedDiv(-dc_texturefrac, dc_iscale) + FRACUNIT - 1) >> FRACBITS;            dc_yl += cnt;            dc_texturefrac += cnt * dc_iscale;        }        const fixed_t endfrac = dc_texturefrac + (dc_yh-dc_yl)*dc_iscale;        const fixed_t maxfrac = post->length << FRACBITS;        if (endfrac >= maxfrac)        {            int cnt = (FixedDiv(endfrac - maxfrac - 1, dc_iscale) + FRACUNIT - 1) >> FRACBITS;            dc_yh -= cnt;        }
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:39,


示例26: P_SpawnLightSequence

void P_SpawnLightSequence(Sector* sector, int indexStep){    int                 count;    {    findlightsequencesectorparams_t params;    params.seqSpecial = LIGHT_SEQUENCE; // Look for Light_Sequence, first.    params.count = 1;    params.sec = sector;    do    {        // Make sure that the search doesn't back up.        P_ToXSector(params.sec)->special = LIGHT_SEQUENCE_START;        params.nextSec = NULL;        P_Iteratep(params.sec, DMU_LINE, &params,                   findLightSequenceSector);        params.sec = params.nextSec;    } while(params.sec);    count = params.count;    }    {    findlightsequencestartsectorparams_t params;    float               base;    fixed_t             index, indexDelta;    params.sec = sector;    count *= indexStep;    index = 0;    indexDelta = FixedDiv(64 * FRACUNIT, count * FRACUNIT);    base = P_SectorLight(sector);    do    {        if(P_SectorLight(params.sec))        {            base = P_SectorLight(params.sec);        }        P_SpawnPhasedLight(params.sec, base, index >> FRACBITS);        index += indexDelta;        params.nextSec = NULL;        P_Iteratep(params.sec, DMU_LINE, &params,                   findLightSequenceStartSector);        params.sec = params.nextSec;    } while(params.sec);    }}
开发者ID:roman313,项目名称:Doomsday-Engine,代码行数:50,


示例27: SCR_Recalc

// Called at new frame, if the video mode has changed//void SCR_Recalc(void){	if (dedicated)		return;	// bytes per pixel quick access	scr_bpp = vid.bpp;	// scale 1,2,3 times in x and y the patches for the menus and overlays...	// calculated once and for all, used by routines in v_video.c	vid.dupx = vid.width / BASEVIDWIDTH;	vid.dupy = vid.height / BASEVIDHEIGHT;	vid.fdupx = (float)vid.width / BASEVIDWIDTH;	vid.fdupy = (float)vid.height / BASEVIDHEIGHT;	vid.baseratio = FixedDiv(vid.height << FRACBITS, BASEVIDHEIGHT << FRACBITS);	// patch the asm code depending on vid buffer rowbytes#ifdef RUSEASM	if (R_ASM)		ASM_PatchRowBytes(vid.rowbytes);//	if (R_486 || R_586 || R_MMX)//		MMX_PatchRowBytes(vid.rowbytes);#endif	// toggle off automap because some screensize-dependent values will	// be calculated next time the automap is activated.	if (automapactive)		AM_Stop();	// r_plane stuff: visplanes, openings, floorclip, ceilingclip, spanstart,	//                spanstop, yslope, distscale, cachedheight, cacheddistance,	//                cachedxstep, cachedystep	//             -> allocated at the maximum vidsize, static.	// r_main: xtoviewangle, allocated at the maximum size.	// r_things: negonearray, screenheightarray allocated max. size.	// set the screen[x] ptrs on the new vidbuffers	V_Init();	// scr_viewsize doesn't change, neither detailLevel, but the pixels	// per screenblock is different now, since we've changed resolution.	R_SetViewSize(); //just set setsizeneeded true now ..	// vid.recalc lasts only for the next refresh...	con_recalc = true;	am_recalc = true;}
开发者ID:Pupswoof117,项目名称:SRB2-Public,代码行数:50,


示例28: P_GetChasecamTarget

static void P_GetChasecamTarget(){   int aimfor;   subsector_t *ss;   int ceilingheight, floorheight;   // aimfor is the preferred height of the chasecam above   // the player   // haleyjd: 1 unit for each degree of pitch works surprisingly well   aimfor = players[displayplayer].viewheight + chasecam_height*FRACUNIT                + FixedDiv(players[displayplayer].pitch, ANGLE_1);         trace.sin = finesine[playerangle>>ANGLETOFINESHIFT];   trace.cos = finecosine[playerangle>>ANGLETOFINESHIFT];      targetx = playermobj->x - chasecam_dist * trace.cos;   targety = playermobj->y - chasecam_dist * trace.sin;   targetz = playermobj->z + aimfor;#ifdef R_LINKEDPORTALS   targetgroupid = playermobj->groupid;#endif   // the intersections test mucks up the first time, but   // aiming at something seems to cure it   // ioanch 20160101: don't let P_AimLineAttack change global trace.attackrange   fixed_t oldAttackRange = trace.attackrange;   // ioanch 20160225: just change trace.attackrange, don't call P_AimLineAttack   trace.attackrange = MELEERANGE;      // check for intersections   P_PathTraverse(playermobj->x, playermobj->y, targetx, targety,                  PT_ADDLINES, PTR_chaseTraverse);   trace.attackrange = oldAttackRange;   ss = R_PointInSubsector(targetx, targety);      floorheight = ss->sector->floorheight;   ceilingheight = ss->sector->ceilingheight;   // don't aim above the ceiling or below the floor   if(targetz > ceilingheight - 10*FRACUNIT)      targetz = ceilingheight - 10*FRACUNIT;   if(targetz < floorheight + 10*FRACUNIT)      targetz = floorheight + 10*FRACUNIT;}
开发者ID:Blastfrog,项目名称:eternity,代码行数:46,


示例29: R_InitLightTables

void R_InitLightTables(void){    int i;    // Calculate the light levels to use    //  for each level / distance combination.    for (i = 0; i < LIGHTLEVELS; i++)    {        int j, startmap = ((LIGHTLEVELS - 1 - i) * 2) * NUMCOLORMAPS / LIGHTLEVELS;        for (j = 0; j < MAXLIGHTZ; j++)        {            int scale = FixedDiv(SCREENWIDTH / 2 * FRACUNIT, (j + 1) << LIGHTZSHIFT);            int level = startmap - (scale >> LIGHTSCALESHIFT) / DISTMAP;            if (level < 0)                level = 0;            else if (level >= NUMCOLORMAPS)                level = NUMCOLORMAPS - 1;            zlight[i][j] = colormaps + level * 256;        }    }}
开发者ID:arneolavhal,项目名称:doomretro,代码行数:24,



注:本文中的FixedDiv函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FixedMul函数代码示例
C++ FixMul函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。