/**
 * @author Administrator
 */
var width=600,height=600;
var xstep=1,ystep=1;
var data=new Array(height);
var comparation=new Array(height);
var binaries=new Array(height);
var equalleft="((abs(y)/y+1)*0.5 *((x+1)*(x+1)+y*y)-1) *((abs(y)/y+1)*0.5*((x-1)*(x-1)+y*y)-1) *((1-abs(y)/y)*(0.5)*(1-abs(x)/x)*0.5*(-1.5*x-y-4)+1)*((1-abs(y)/y)*0.5*(abs(x)/x+1)*0.5*(1.5*x-y-3-1)+1)",equalright="0";
for (var i = 0; i < height; i++) {
	data[i] = new Array(width);
	comparation[i] = new Array(width);
	binaries[i]=new Array(width);
}
var xmin=-10,xmax=10,ymin=-10,ymax=10;
function GetMatrix(){
	
	for(var i=0;i<height;i++)
		for(var j=0;j<width;j++)
		{
			data[i][j]=new Array(2);
			data[i][j][0]=(ymin * ystep + (ymax - ymin) * ystep * ((height- i-1) / (height-1)));
			data[i][j][1]=(xmin * xstep + (xmax - xmin) * xstep * (j / (width-1)));
			
		}
}
function Calculate(){
	
	var str="("+equalleft+")-("+equalright+")";
	var x,y;
	var str2="for (var i = 0; i < height; i++)\n"+ 
		"for (var j = 0; j < width; j++) {\n"+
			"x=data[i][j][1]; y=data[i][j][0];"+
			"comparation[i][j]="+str+";"+			
		"}";
	eval(str2);
}
function CreateBinaries(){

	for (var i = 0; i < height - 1; i++) 
		for (var j = 0; j < width - 1; j++) {
			
			if (data[i][j][0] * data[i + 1][j][0] <= 0 || data[i][j][1] * data[i][j + 1][1] <= 0) 
				binaries[i][j] |= 1;
			if (comparation[i][j] == 0) 
				binaries[i][j] |= 1;
			if (comparation[i][j] * comparation[i][j + 1] < 0) {
				binaries[i][j] |= 1;
				binaries[i][j + 1] |= 1;
			}
			if (comparation[i][j] * comparation[i + 1][j] < 0) {
				binaries[i][j] |= 1;
				binaries[i + 1][j] |= 1;
				
			}
		}
}
function ResetBinaries()
{
	for(var i=0;i<height;i++)
	for(var j=0;j<width;j++)
	{
		binaries[i][j]=0;
	}
}
function CreateTeeth()
{
	for(var i=Math.ceil(xmin);i<=xmax;i++)
	{
		var x=Math.floor(width * ((i - xmin) / (xmax - xmin)))-1;
		var y=Math.floor(height * ((ymax) / (ymax - ymin)))-1;
		binaries[y-1][x]=1;
	}
	for(var i=Math.ceil(ymin);i<ymax;i++)
	{
		var x=Math.floor(width * ((- xmin) / (xmax - xmin)))-1;
		var y=Math.floor(height * ((ymax-i) / (ymax - ymin)))-1;
		binaries[y][x+1]=1;
	}
}
function showhelp()
{
	var str="方程作图器 javascript版\n";
	str+="本工具仅由html与javascript语言编成，却可以绘出任意关于x,y的方程的图像。\n";
	str+="输入方程后点击“添加”，将方程添加至列表中，然后点击“画图”绘出方程图像。\n";
	str+="图像高度和宽度代表图像的像素数。在IE6、7浏览器中两数之积最好小于50000，IE8、Firefox2、3中最好小于100000，Firefox3.5中最好小于300000。不兼容Opera。\n";
	str+="单像素高度和宽度代表每个像素（即字符）的大小。宽度：高度的值一般为2：1，两数越小图像越细腻，但图像越小。\n";
	str+="支持的函数：sin cos tan asin acos atan sqrt pow(底,指数) log(底数,真数) abs\n";
	str+="支持的常数：pi e\n";
	str+="注意：不可省略乘号；无中括号、大括号，一律用小括号；一定不要输入错误的（如括号不对称）的方程，不然速度奇慢；x^y不代表x的y次幂，而代表x异或y；所有字母请用小写。";
	alert(str);
}

