[从头学数学] 第94节 圆
来源:互联网 发布:体彩外围软件 编辑:程序博客网 时间:2024/04/28 22:59
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第十一层功法的修炼,
这次要修炼的目标是[圆]。
然后才得到了这个图。
这样就全部完成了。
本节到此结束,欲知后事如何,请看下回分解。
[机器小伟]在[工程师阿伟]的陪同下进入练气期第十一层功法的修炼,
这次要修炼的目标是[圆]。
正剧开始:
星历2016年02月18日 16:27:34, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究圆。
在开始今天的修炼之前,小伟突然想起了风车,于是就拿出来玩了一会:
<span style="font-size:18px;">//大风车 转呀转function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); var image = new Image();image.src = './1.jpg';image.onload = function() {var angle = 0;var interval = setInterval(function() {windMill(angle);angle += Math.PI/6;if (angle > Math.PI*2)angle = Math.PI/6;}, 50);}}function windMill(rot) {var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1); config.axis2D(0, 0, 180); plot.save().rotate(rot); shape.strokeDraw(shape.nEdge(0, 0, 80, 4, Math.PI/4), 'black'); var tri = new Triangle(); plot.save() .translate(-100, 0); tri.know3edges([100, 100, 141]); tri.fill('green', 1); plot.restore(); plot.save() .translate(0, -100) .rotate(Math.PI/2); tri.know3edges([100, 100, 141]); tri.fill('yellow', 1); plot.restore(); plot.save() .translate(100, 0) .rotate(Math.PI); tri.know3edges([100, 100, 141]); tri.fill('red', 1); plot.restore(); plot.save() .translate(0, 100) .rotate(Math.PI*1.5); tri.know3edges([100, 100, 141]); tri.fill('blue', 1); plot.restore(); plot.restore();}</span>
这奇怪的图其实是风车在转的时候截的,所以显得很诡异。
开始今天的主题吧。
要说小伟画圆可不用圆规,可是画出的圆还是那么的圆。
尝试画这个可费了小伟不少的功夫。
中间还出了一个产品:
<span style="font-size:18px;">//空白星形在中心function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;var x1 = r, y1 = r;plot.setFillStyle('red');plot.save()plot.beginPath().moveTo(0, -r).arcTo(0, 0, r, 0, r).moveTo(0, -r).arcTo(0, 0, -r, 0, r).moveTo(0, r).arcTo(0, 0, -r, 0, r).moveTo(0, r).arcTo(0, 0, r, 0, r).moveTo(0, -r).arcTo(r, -r, r, 0, r).moveTo(0, -r).arcTo(-r, -r, -r, 0, r).moveTo(0, r).arcTo(r, r, r, 0, r).moveTo(0, r).arcTo(-r, r, -r, 0, r).closePath();plot.fill();plot.restore();}</span>
然后才得到了这个图。
<span style="font-size:18px;">//四叶草function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;var x1 = r, y1 = r;plot.setFillStyle('blue');shape.fillCircle(0, 0, r);r *= 0.707;plot.setFillStyle('cyan');plot.save().rotate(Math.PI/4);plot.beginPath().moveTo(0, 0).arcTo(0, -r, -r, -r, r).moveTo(0, 0).arcTo(-r, 0, -r, -r, r).moveTo(0, 0).arcTo(0, r, -r, r, r).moveTo(0, 0).arcTo(-r, 0, -r, r, r).moveTo(0, 0).arcTo(0, -r, r, -r, r).moveTo(0, 0).arcTo(r, 0, r, -r, r).moveTo(0, 0).arcTo(0, r, r, r, r).moveTo(0, 0).arcTo(r, 0, r, r, r).closePath();plot.fill();plot.restore();}</span>
这个也出了一个中间产品:
<span style="font-size:18px;">//怪象function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;plot.setFillStyle('#FF0066');shape.fillCircle(0, 0, r);var sAngle = 0, eAngle = Math.PI;plot.save().setFillStyle('#0066FF');plot.beginPath().arc(r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -r/2, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, r/2, r/2, sAngle, eAngle, 1).closePath().fill();plot.restore();r *= 0.5;plot.save().setFillStyle('#FF0066');plot.beginPath().arc(3*r/2, 0, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -3*r/2, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-3*r/2, 0, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, 3*r/2, r/2, sAngle, eAngle, 0).closePath().fill();plot.restore();plot.save().setFillStyle('#0066FF');plot.beginPath().arc(r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -r/2, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, r/2, r/2, sAngle, eAngle, 1).closePath().fill();plot.restore();}</span>
然后才得到:
<span style="font-size:18px;">//八门金锁 紫荆花function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;var style1 = '#FF0066', style2 = '#0066FF';//整圆plot.setFillStyle(style1);shape.fillCircle(0, 0, r);var sAngle = 0, eAngle = Math.PI;//大半圆plot.save().setFillStyle(style2);plot.beginPath().arc(r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -r/2, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, r/2, r/2, sAngle, eAngle, 1).closePath().fill();plot.restore();//小半圆,较远r *= 0.5;sAngle = 0, eAngle = Math.PI;plot.save().setFillStyle(style2);plot.beginPath().arc(3*r/2, 0, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -3*r/2, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-3*r/2, 0, r/2, sAngle, eAngle, 0).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, 3*r/2, r/2, sAngle, eAngle, 0).closePath().fill();plot.restore();//小半圆,紧挨中心sAngle = 0, eAngle = Math.PI;plot.save().setFillStyle(style1);plot.beginPath().arc(r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, -r/2, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(-r/2, 0, r/2, sAngle, eAngle, 1).closePath().fill();sAngle-=Math.PI/2, eAngle -= Math.PI/2;plot.beginPath().arc(0, r/2, r/2, sAngle, eAngle, 1).closePath().fill();plot.restore();}</span>
还有随意画的一些花:
<span style="font-size:18px;">//更复杂的花function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;var x1 = r, y1 = r;var style = ['red', 'blue', 'green', 'pink', 'orange', 'cyan', 'purple'];plot.setFillStyle('blue');shape.fillCircle(0, 0, r);plot.setGlobalCompositeOperation('lighter');for (var i = 0; i < 5; i++) {r *= 0.8;plot.setFillStyle(style[i%6]);plot.save().rotate(Math.PI/4*i);plot.beginPath().moveTo(0, 0).arcTo(0, -r, -r, -r, r).moveTo(0, 0).arcTo(-r, 0, -r, -r, r).moveTo(0, 0).arcTo(0, r, -r, r, r).moveTo(0, 0).arcTo(-r, 0, -r, r, r).moveTo(0, 0).arcTo(0, -r, r, -r, r).moveTo(0, 0).arcTo(r, 0, r, -r, r).moveTo(0, 0).arcTo(0, r, r, r, r).moveTo(0, 0).arcTo(r, 0, r, r, r).closePath();plot.fill();plot.restore();}}</span>
<span style="font-size:18px;">//更复杂的花function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var r = 100;var x0 = 0, y0 = 0;var x1 = r, y1 = r;var style = ['red', 'blue', 'green', 'pink', 'orange', 'cyan', 'purple'];plot.setFillStyle('blue');shape.fillCircle(0, 0, r);plot.setGlobalCompositeOperation('source-over');for (var i = 0; i < 5; i++) {r *= 0.8;plot.setFillStyle(style[i%6]);plot.save().rotate(Math.PI/4*i);plot.beginPath().moveTo(0, 0).arcTo(0, -r, -r, -r, r).moveTo(0, 0).arcTo(-r, 0, -r, -r, r).moveTo(0, 0).arcTo(0, r, -r, r, r).moveTo(0, 0).arcTo(-r, 0, -r, r, r).moveTo(0, 0).arcTo(0, -r, r, -r, r).moveTo(0, 0).arcTo(r, 0, r, -r, r).moveTo(0, 0).arcTo(0, r, r, r, r).moveTo(0, 0).arcTo(r, 0, r, r, r).closePath();plot.fill();plot.restore();}}</span>
这样的图小伟怎么会错过机会去尝试呢,于是就画出了:
//题10 <1>function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var r = 100;var rx, ry;var signX = signY = -1;plot.setFillStyle('blue');shape.fillRect(0, 0, 2*r, 2*r);plot.setFillStyle('pink');for (var i = 0; i < 2; i++) {for (var j = 0; j < 2; j++) {signX = Math.pow(-1, i);signY = Math.pow(-1, j);plot.beginPath().moveTo(0, 0).arcTo(r*signX, 0, r*signX, r*signY, r).moveTo(0, 0).arcTo(0, r*signY, r*signX, r*signY, r).closePath().fill();}}}
//题10 <2>function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); /*var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var rx, ry;var signX = signY = -1;*/var r = 100;var x0 = 0, y0 = 0; var style1 = '#FF0066', style2 = '#0066FF'; //整圆 plot.setFillStyle(style1); shape.fillCircle(0, 0, r); var sAngle = 0, eAngle = Math.PI; //大半圆 plot.save() .setFillStyle(style2); plot.beginPath() .arc(r/2, 0, r/2, sAngle, eAngle, 0) .closePath() .fill(); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.beginPath() .arc(0, -r/2, r/2, sAngle, eAngle, 0) .closePath() .fill(); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.beginPath() .arc(-r/2, 0, r/2, sAngle, eAngle, 0) .closePath() .fill(); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.beginPath() .arc(0, r/2, r/2, sAngle, eAngle, 0) .closePath() .fill(); plot.restore(); }
//题10 <3>function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); /*var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var rx, ry;var signX = signY = -1;*/var r = 100;var x0 = 0, y0 = 0; var style1 = '#FF0066', style2 = '#0066FF'; var sAngle = 0, eAngle = Math.PI; //两个半圆拼成整圆 plot.setFillStyle(style1); plot.beginPath() .arc(0, 0, r, sAngle, eAngle, 0) .closePath() .fill(); plot.setFillStyle(style2); plot.beginPath() .arc(0, 0, r, sAngle, eAngle, 1) .closePath() .fill(); //大半圆 plot.save() .setFillStyle(style2); plot.beginPath() .arc(r/2,0, r/2, sAngle, eAngle, 0) .closePath() .fill(); plot.save() .setFillStyle(style1); plot.beginPath() .arc(-r/2, 0, r/2, sAngle, eAngle, 1) .closePath() .fill(); }
//题10 <4>function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var r = 100; var style1 = color[0], style2 = color[1]; plot.save().rotate(-Math.PI/6);for (var i = 0; i < 2; i++) {for (var j = 0; j < 2; j++) {var signX = Math.pow(-1, i);var signY = Math.pow(-1, j);if (j % 2 == 0) {plot.setFillStyle(color[(i+j)%2]).beginPath() .moveTo(0, 0).lineTo(signX*r, 0).arcTo(signX*r, signY*r, 0, signY*r, r, r).closePath() .fill();}else {plot.setFillStyle(color[(i+j)%2]).beginPath() .moveTo(0, 0).lineTo(0, signY *r).arcTo(signX*r, signY*r, signX*r, 0, r, r).closePath() .fill();}}} //大半圆 var sAngle = 0, eAngle = Math.PI; plot.setFillStyle(style2); plot.beginPath() .arc(r/2, 0, r/2, sAngle, eAngle, 0) .closePath() .fill(); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.setFillStyle(style1); plot.beginPath() .arc(0, -r/2, r/2, sAngle, eAngle, 0) .closePath() .fill(); plot.setFillStyle(style2); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.beginPath() .arc(-r/2, 0, r/2, sAngle, eAngle, 0) .closePath() .fill(); plot.setFillStyle(style1); sAngle-=Math.PI/2, eAngle -= Math.PI/2; plot.beginPath() .arc(0, r/2, r/2, sAngle, eAngle, 0) .closePath() .fill(); plot.restore();}
这样就全部完成了。
还有小伟进行的测试:
//arcTo测试function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var r = 100;shape.strokeCircle(0, 0, r);for (var i = 0; i < 2; i++) {plot.setFillStyle(color[i%7]).beginPath().moveTo(0, 0).arcTo(r, 0, r, r, r).closePath().fill();r *= 0.5;}}//arcTo测试function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis2D(0, 0, 180); var color = ['red', 'green', 'blue', 'orange', 'cyan', 'purple', 'pink'];var r = 100;var rx = r * Math.cos(Math.PI/6), ry = r * Math.sin(Math.PI/6);for (var i = 0; i < 25; i++) {rx = r * Math.cos(Math.PI/12*i), ry = r * Math.sin(Math.PI/12*i);plot.setFillStyle(color[i%7]).beginPath().moveTo(0, 0).arcTo(0+rx, 0, 0+rx, 0-ry, r).closePath().fill();}}
接下来就是计算了。
>>> S = lambda d : 1/4*3.1416*d*d;>>> 2*S(1);1.5708>>> C = lambda d : 3.1416*d;>>> 2*C(1);6.2832
>>> S(33)-S(14)-(S(26.4)-S(14.4));316.83
>>> C(13.5)/2+1.575*224.3558>>> S(13.5)/2+1.575*13.592.832
>>> C(2.4)7.53984>>> S(20)314.16
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第94节 圆
- [从头学数学] 第154节 圆
- [从头学数学] 第155节 圆 小结与复习题
- [从头学数学] 第173节 圆与方程
- [从头学数学] 第03节 位置
- [从头学数学] 第40节 测量
- [从头学数学] 第52节 面积
- [从头学数学] 第65节 四则运算
- [从头学数学] 第69节 三角形
- [从头学数学] 第75节 位置
- [从头学数学] 第77节 可能性
- [从头学数学] 第93节 比
- [从头学数学] 第98节 负数
- [从头学数学] 第101节 比例
- [从头学数学] 第108节 有理数
- [从头学数学] 第112节 一元一次方程
- [从头学数学] 第118节 实数
- [从头学数学] 第128节 三角形
- Unity3d LineRenderer画线
- <c:remove>和<c:catch>-------JSTL
- 京釜線車中의 젊은 두 勞働者 (1938)
- IntentService
- Android应用架构 (Android Dev Summit 2015)
- [从头学数学] 第94节 圆
- Android反编工具的使用-Android Killer
- Zxing生产二维码 附带添加logo
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- 拒绝一切繁琐的if...else...
- TextView设置最多显示指定字符数,超过部分显示...(省略号)
- <c:if>------JSTL
- jsp下页面跳转的几种方法小结
- Android Download机制详解(一)DocumentUI部分