JavaScript代码:
function drawOval(x, y, a, b){
if(arguments.length == 3) {
return drawOval(x, y, a, a);
}
var i, j;
var tpos = [];
var x1, x2, y1, y2;
var html = "";
for(i = 0; i <= a; i++){
j = Math.floor(Math.sqrt(b*b - b*b*i*i/(a*a))+0.5);
x1 = i+x;
x2 = -i+x;
y1 = j+y;
y2 = -j+y;
if(!tpos[x1*1000+y1])
{
drawPos(x1,y1);
drawPos(x1,y2);
drawPos(x2,y1);
drawPos(x2,y2);
tpos[x1*1000+y1] = true;
}
}
for(i = 0; i <= b; i++)
{
j = Math.floor(Math.sqrt(a*a - a*a*i*i/(b*b))+0.5);
x1 = j+x;
x2 = -j+x;
y1 = i+y;
y2 = -i+y;
if(!tpos[x1*1000+y1])
{
drawPos(x1,y1);
drawPos(x1,y2);
drawPos(x2,y1);
drawPos(x2,y2);
tpos[x1*1000+y1] = true;
}
}
document.write(html);
function drawPos(x, y)
{
html += " ";
}
}
drawOval(200, 200, 100); // 圆
drawOval(300, 300, 200, 100); // 椭圆
if(arguments.length == 3) {
return drawOval(x, y, a, a);
}
var i, j;
var tpos = [];
var x1, x2, y1, y2;
var html = "";
for(i = 0; i <= a; i++){
j = Math.floor(Math.sqrt(b*b - b*b*i*i/(a*a))+0.5);
x1 = i+x;
x2 = -i+x;
y1 = j+y;
y2 = -j+y;
if(!tpos[x1*1000+y1])
{
drawPos(x1,y1);
drawPos(x1,y2);
drawPos(x2,y1);
drawPos(x2,y2);
tpos[x1*1000+y1] = true;
}
}
for(i = 0; i <= b; i++)
{
j = Math.floor(Math.sqrt(a*a - a*a*i*i/(b*b))+0.5);
x1 = j+x;
x2 = -j+x;
y1 = i+y;
y2 = -i+y;
if(!tpos[x1*1000+y1])
{
drawPos(x1,y1);
drawPos(x1,y2);
drawPos(x2,y1);
drawPos(x2,y2);
tpos[x1*1000+y1] = true;
}
}
document.write(html);
function drawPos(x, y)
{
html += " ";
}
}
drawOval(200, 200, 100); // 圆
drawOval(300, 300, 200, 100); // 椭圆
JavaScript代码讲解:
| function drawOval(x, y, a, b){ if(arguments.length == 3) { return drawOval(x, y, a, a); } | 定义一个drawOval函数,四个参数x,y,a,b 如果传递给函数drawOval的参数数目是3,则返回drawOval(x,y,a,a) |
| var i, j; var tpos = []; var x1, x2, y1, y2; var html = ""; | 定义一些变量i,j,x1,x2,y1,y2,html和一个数组tpos |
| for(i = 0; i <= a; i++){ j = Math.floor(Math.sqrt(b*b - b*b*i*i/(a*a))+0.5); x1 = i+x; x2 = -i+x; y1 = j+y; y2 = -j+y; | Math.floor(x):返回小于或等于x的最大整数 math.sqrt 返回指定数字的平方根 j = Math.floor(Math.sqrt(b*b - b*b*i*i/(a*a))+0.5);是用来计算圆周率 |
| if(!tpos[x1*1000+y1]){ drawPos(x1,y1); drawPos(x1,y2); drawPos(x2,y1); drawPos(x2,y2); tpos[x1*1000+y1] = true; } } | 通过数组来设置圆、椭圆在页面坐标 |
| document.write(html); | 打印html变量 |
| function drawPos(x, y){ html += " "; } } | 定义函数drawPos(x,y),x,y为页面标记,左边为x像素,顶头y像素 |
| drawOval(200, 200, 100); // 圆 drawOval(300, 300, 200, 100); // 椭圆 |
圆:页面左边200px,顶头200px,半径100px 椭圆:页面左边200px,顶头200px,半径200px;高100px |
本文详细介绍了如何在HTML中利用JavaScript实现画圆和椭圆的方法,通过函数实现动态绘图,为网页增添交互性。


被折叠的 条评论
为什么被折叠?



