// 固定小数点とブレゼンハムの誤差をテストしてみる #include #define LIMIT_SIZE (1<<9) // 10bit #define POINT_SHIFT 20 // 小数点以下のbit数 #define POINT_SIZE (1<= 0) { y ++; E -= 2*Dx; } } } void Fixpoint(int *buf, int Dx, int Dy) { // 傾きを求める //Dx:Dy=POINT_SIZE:dy //dy = Dy*POINT_SIZE/Dx int dy = (Dy << POINT_SHIFT) / Dx; int y = 1 << (POINT_SHIFT-1); // 0.5加える for(int i = 0; i <= Dx; i ++) { buf[i] = y >> POINT_SHIFT; y += dy; } }