JavaScript图形实例再谈曲线方程Word下载.docx

上传人:b****5 文档编号:20951429 上传时间:2023-01-26 格式:DOCX 页数:18 大小:1.11MB
下载 相关 举报
JavaScript图形实例再谈曲线方程Word下载.docx_第1页
第1页 / 共18页
JavaScript图形实例再谈曲线方程Word下载.docx_第2页
第2页 / 共18页
JavaScript图形实例再谈曲线方程Word下载.docx_第3页
第3页 / 共18页
JavaScript图形实例再谈曲线方程Word下载.docx_第4页
第4页 / 共18页
JavaScript图形实例再谈曲线方程Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

JavaScript图形实例再谈曲线方程Word下载.docx

《JavaScript图形实例再谈曲线方程Word下载.docx》由会员分享,可在线阅读,更多相关《JavaScript图形实例再谈曲线方程Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

JavaScript图形实例再谈曲线方程Word下载.docx

>

functiondraw(id)

{

varcanvas=document.getElementById(id);

if(canvas==null)

returnfalse;

varcontext=canvas.getContext('

2d'

);

context.fillStyle="

#EEEEFF"

;

context.fillRect(0,0,300,300);

context.strokeStyle="

red"

context.lineWidth=2;

context.save();

context.translate(150,150);

varr=120;

context.beginPath();

for(theta=0;

theta<

=2*Math.PI;

theta+=Math.PI/100)

varx=r*Math.cos(2*theta)*Math.sin(theta);

vary=r*Math.cos(2*theta)*Math.cos(theta);

if(theta==0)

context.moveTo(x,y);

else

context.lineTo(x,y);

}

context.stroke();

context.restore();

/script>

/head>

bodyonload="

draw('

myCanvas'

"

canvasid="

myCanvas"

width="

300"

height="

/canvas>

/body>

/html>

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出四叶花瓣线图案,如图1所示。

图14叶花瓣线

下面将四叶花瓣线的笛卡尔坐标方程式参数化为:

x=r*cos(nθ)*sin(θ)

y=r*sin(nθ)*cos(θ)(0≤θ≤2π)

编写程序,在画布中绘制出n=1~10时的图案。

编写的HTML文件内容如下。

四叶花瓣线方程参数化<

context.fillRect(0,0,510,210);

n=0;

r=45;

for(py=50;

py<

=150;

py+=100)

for(px=50;

px<

=450;

px+=100)

n++;

varx=r*Math.cos(n*theta)*Math.sin(theta)+px;

vary=r*Math.cos(n*theta)*Math.cos(theta)+py;

}

510"

210"

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出如图2所示花瓣线图案。

图2花瓣线图案

图2中的10个图案从上到下,从左往右对应着N取值为1~10时的情况。

由图2可知,当N为奇数时,花卉线为N瓣;

当N为偶数时,花瓣线为2*N瓣。

能否给定N就绘制N瓣花呢?

将坐标方程修改如下:

x=r*(1/2+1/2*sin(nθ))*cos(θ)

y=r*(1/2+1/2*sin(nθ))*sin(θ)(0≤θ≤2π)

编写HTML文件内容如下。

N叶花瓣线方程参数化<

varx=r*(1/2+1/2*Math.sin(n*theta))*Math.cos(theta)+px;

vary=r*(1/2+1/2*Math.sin(n*theta))*Math.sin(theta)+py;

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出如图3所示的N(N为1~10)叶花瓣线图案。

图3N叶花瓣线图案

我们还可以将四叶花瓣线的笛卡尔坐标方程式参数化为:

x=r*(1/5*sin(n*p*θ)+sin(n*θ))*cos(θ)

y=r*(1/5*sin(n*p*θ)+sin(n*θ))*sin(θ)(0≤θ≤2π)

编写如下的HTML文件。

可设置参数的N瓣花卉图<

varr=100;

varn=eval(document.myForm.petalNum.value);

if(n%2==0&

&

n%4!

=0)

alert("

花瓣数如果是偶数,必须是4的倍数!

return;

if(n%2==0)n=n/2;

varp=eval(document.myForm.shape.value);

theta+=Math.PI/180)

x=150+r*(1/5*Math.sin(n*p*theta)+Math.sin(n*theta))*Math.cos(theta);

y=150+r*(1/5*Math.sin(n*p*theta)+Math.sin(n*theta))*Math.sin(theta);

body>

formname="

myForm"

花瓣数<

inputtype=numbername="

petalNum"

value=4size=3>

br>

花形:

shape"

value=1size=3>

inputtype=buttonvalue="

确定"

onClick="

/form>

在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出如图4所示的花卉线图案。

图4可设置参数的N瓣花卉图

由图4可以看出,由于参数方程中和一个正弦P次波进行了合成,因此花卉的花瓣形状会发生改变。

2.花型图案

根据参数方程:

x=r*(sin(n*0.5*θ)/3+sin(n*θ))*cos(2*θ)

y=r*(sin(n*0.5*θ)/3+sin(n*θ))*sin(2*θ)(0≤θ≤2π)

花型图案<

context.fillRect(0,0,500,210);

context.lineWidth=1;

b=35;

theta+=Math.PI/128)

r=b/3*Math.sin(n*0.5*theta)+b*Math.sin(n*theta);

x=px+r*Math.cos(2*theta);

y=py+r*Math.sin(2*theta);

bx=x;

by=y;

context.lineTo(bx,by);

500"

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以在画布中绘制出N=1~10的10种花型图案,如图5所示。

图5花型图案1

先将上面代码中的语句“x=px+r*Math.cos(2*theta);

”和“y=py+r*Math.sin(2*theta);

”中的“2*theta”均修改为“4*theta”,则在画布中绘制出如图6所示的图案;

若再将语句“r=b/3*Math.sin(n*0.5*theta)+b*Math.sin(n*theta);

”中的“n*0.5*theta”修改为“n*theta”,则在画布中绘制出如图7所示的图案。

图6花型图案2

图7花型图案3

在这30个图案中,有你喜欢的吗?

3.曲线图案1

x=r*sin(n*θ)*cos(5*θ)

y=r*sin((n+k)*θ)*sin(5*θ)(0≤θ≤2π)

曲线图案1<

context.fillRect(0,0,500,500);

n=n+2;

k=0;

k++;

theta+=Math.PI/64)

x=px+r*Math.sin(n*theta)*Math.cos(5*theta);

y=py+r*Math.sin((k+n)*theta)*Math.sin(5*theta);

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出的曲线图案1-1,如图8所示。

在图8中绘制了5行5列共25个曲线图案。

其中,第1行是参数方程中n取值为2,k取值依次为1,2,3,4,5的5个图案;

第2行是参数方程中n取值为4,k取值依次为1,2,3,4,5的5个图案;

……;

第5行是参数方程中n取值为10,k取值依次为1,2,3,4,5的5个图案。

图8曲线图案1-1

绘制图8程序中,求x和y坐标的语句中,均有“5*theta”,这里“5”作为倍数(不妨设为参数p)也可以修改。

例如,修改两语句中的“5*theta”为“theta”,则在画布中绘制出如图9所示的曲线图案1-2。

修改两语句中的“5*theta”为“2*theta”,则在画布中绘制出如图10所示的曲线图案1-3。

图9曲线图案1-2

图10曲线图案1-3

再如,直接修改绘制图8程序代码中的语句“varn=0;

”为“varn=1;

”,其余部分不变,则在画布中绘制出如图11所示的曲线图案4。

这些图案是N分别取3,5,7,9,11,k分别取1~5,p取5时所对应的曲线图案。

图11曲线图案1-4

对照图8、9、10、11,通过修改n、k和p,你会找到你喜欢的图案吗?

4.曲线图案2

修改曲线图案1中的参数方程为:

x=r*sin((n+k)*θ)*cos(p*θ)

y=r*sin(n*θ)*sin(p*θ)(0≤θ≤2π)

曲线图案2<

blue"

p=1;

n=n+1;

x=px+r*Math.sin((k+n)*theta)*Math.cos(p*theta);

y=py+r*Math.sin(n*theta)*Math.sin(p*theta);

将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在画布中绘制出的曲线图案2-1,如图12所示。

在图12中绘制了5行5列共25个曲线图案。

其中,第i行第j列的曲线图案对应参数值n=i,k=j。

图12曲线图案2-1

直接修改绘制图12程序代码中的语句“p=1;

”为“p=4;

”,其余部分不变,则在画布中绘制出如图13所示的曲线图案2-2。

图13曲线图案2-2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1