zigzag.cpp

来自「可以选择各种压缩方式对读入的图像进行压缩和解压」· C++ 代码 · 共 51 行

CPP
51
字号
#include "stdafx.h"
#include "zigzag.h"
coordinate zigzagPos[63];
//zigzagPos[0]=(1,0) [0~62]

unsigned short int zigzag(int &x, int &y, int &d, int N){
//Move cursor to the next point of zigzag on N*N map, and return 1 when current cursor is the last one
//d stands for direction: always x+direction, y-direction, left-down for -1
	if ((x==(N-1))&&(y==(N-1)))
	{
		x=1; y=0;
		return 1;
	}
	else
	{
		if (((x+=d)<0)|( (y-=d)<0)|| x==N || y==N)
		{
			d=-d;
			if (y==N) {
				y--;
				x+=2;
			}
			else 
			if (x==N) {
				x--;
				y+=2;
			}
			else {
				if (y<0) y=0;
				if (x<0) x=0;
			}
		}
		return 0;
	}
}

void initZigZag(int N){
	int x=1, y=0, d=-1;
	zigzagPos[0].x=x;
	zigzagPos[0].y=y;
	for (int i=1;i<N*N-1;i++){
		zigzag(x,y,d,N);
		zigzagPos[i].x=x;
		zigzagPos[i].y=y;
	}
}

void fastZigZag(int i, int &x, int &y){
	x=zigzagPos[i].x;
	y=zigzagPos[i].y;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?