確保某值在區間內

2022-04-12 09:58:47 字數 1223 閱讀 8034

在地形繪製的時候,把地形中每乙個頂點的紋理位置在[0,64]的區間內遞增,使得場景的紋理有移動的效果。

想起以前看過的一點小技巧,利用%操作符可以讓值在固定區間內:

#include #include #include int main()             

//printf("%d\n",(-2)%13); // (-2)%13 == -2

getchar();

return 0;

}

上面的rand ()隨機函式就是某個值的遞變,例如 i++;

int k = _translation;

int i = 0;

for(int z = startz; z >= endz; z -= _cellspacing)

i++;

k = (k++)%64;

}

上面的_translation是下面的rollingdecrease控制遞增:

void terrain::rollingdecr()
紋理滾動:

還有一種確保某個值在固定區間的計數方法:

int i;    //不需要在i輸入的時候控制i值的範圍

i = max( 0, min( 100 , i ) ); //[0,100]

處理完鍵盤的訊息後,加上下面的函式,

使得camera的x與z值不超出 _lefttop,_rightdown兩點位置的x和z值

void camera::postionadjust()
然後接下來地形根據camera的x和z值來獲取高度資料,此時x,z值不會超出地形之外,

索引index  = i * numvertexsperrow + j;的計算不會是陣列下表超出範圍,產生例如:"vector subscript out of range"記憶體錯誤

原圖:

非負整數區間內含某數字的數的個數

群裡有人問了這個問題 然後被attack秒了orz 考慮數字dp 預處理v 第幾位 該位是否是目標數字 是否有目標數字 顯然數字除了0之外的求解過程是完全一致的 那麼我們特判0就可以了 include cstdio include cstring include iostream include a...

P1440 求M區間內的最小值

乙個含有 nn 項的數列,求出每一項前的 mm 個數到它這個區間內的最小值。若前面的數不足 mm 項則從第 11 個數開始,若前面沒有數則輸出 00。第一行兩個整數,分別表示 nn,mm。第二行,nn 個正整數,為所給定的數列 a ia i nn 行,每行乙個整數,第 ii 個數為序列中 a ia ...

P1440 求m區間內的最小值

乙個含有n項的數列 n 2000000 求出每一項前的m個數到它這個區間內的最小值。若前面的數不足m項則從第1個數開始,若前面沒有數則輸出0。輸入格式 第一行兩個數n,m。第二行,n個正整數,為所給定的數列。輸出格式 n行,第i行的乙個數ai,為所求序列中第i個數前m個數的最小值。輸入樣例1 627...