利用javascript在一个div快内纵向计算打印出该行的圆上两点
源代码在线查看: js.html
程序功能:利用js在一个方框内打印一个圆
程序制作:付江云
算法来源:梁栋
说明:本程序中相关的html和js编程不重要,重要的是希望大家能理解到这个算法,利用这种方式打印一个纵向200个点的实验需要执行近15秒,网页打开时打开会卡会儿后出现一个圆,除了上下两头比较稀疏,其他地方点看起来都还密集。
测试环境:T5450 @1.66GHZ,1G内存
-->
用JS在正方形方框内打印一个圆
.dian{background-color:red;}
//定义几个需要用的变量,x1和x2是横线和圆的两个交点,y是定义的纵向坐标数,borderwidth是整个正方形的边框厚度,danwei是每个点的象素,banjing是以象素为单位的半径值。
var x1,x2,y,borderwidth=1,danwei=1,banjing=100;
//定义画园主函数,主要功能有画一个边框,以及在每一行根据圆的方程计算出圆上的两点横坐标,并且调用huadian()函数将两点用生成红色span块的方式“打印”出来,如此循环直到打印完所有行的点,结束。
function huanyuan()
{
bw=2*(banjing*danwei+borderwidth);
bh=2*(banjing*danwei+borderwidth);
document.body.innerHTML+='';
for(y=0;y {
x1=parseInt(banjing-Math.sqrt(banjing*banjing-(y-banjing)*(y-banjing)));
x2=parseInt(banjing+Math.sqrt(banjing*banjing-(y-banjing)*(y-banjing)));
huadian(x1*danwei,y*danwei);
huadian(x2*danwei,y*danwei);
}
}
//定义画点函数,根据传递过来的参数确定生成的span块(即圆上的点)的位置。
function huadian(zuo,gao)
{
MainMap.innerHTML += '';
}
onload=huanyuan;//窗口加载时运行画圆主函数。
//-->