标签:
剧情提要:正剧开始:
星历2016年05月03日 13:18:47, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[坐标系与参数方程]。
<span style="font-size:18px;">例3
-2.499999999999999,4.330127018922194
例4
1.9999559995159892,3.6652041313597623
习题1.2 -- 3
4
习题1.2 -- 4
2.121320343559643,2.1213203435596424
-0.9999999999999996,1.7320508075688774
2.4492935982947064e-16,4
-0.866,1.0605441280616079e-16
习题1.2 -- 5
3.4640762116327637,0.523586073612931
-0.7453333333333334,4.71238898038469
3.5,0
3.9999119990319785,4.1887775026147205
if (1) {
hint('例3');
hint(polar2XY([5, 2/3*Math.PI]));
hint('例4');
hint(XY2polar([-1.732, -1]));
hint('习题1.2 -- 3');
var pointA = [3, -Math.PI/3], pointB = [1, 2*Math.PI/3];
hint(distance2D(polar2XY(pointA), polar2XY(pointB)));
hint('习题1.2 -- 4');
hint(polar2XY([3, Math.PI/4]));
hint(polar2XY([2, Math.PI*2/3]));
hint(polar2XY([4, Math.PI/2]));
hint(polar2XY([0.866, Math.PI]));
hint('习题1.2 -- 5');
hint(XY2polar([3, 1.732]));
hint(XY2polar([0, -2.236/3]));
hint(XY2polar([3.5, 0]));
hint(XY2polar([-2, -2*1.732]));
}
//极坐标转为直角坐标
function polar2XY(point) {
var rou = point[0], thita = point[1];
return [rou*Math.cos(thita), rou*Math.sin(thita)];
}
//直角坐标转为极坐标
function XY2polar(point) {
var x = point[0], y = point[1];
var rou = Math.pow(x*x+y*y, 0.5);
var thita = Math.PI/2;
if (x != 0) {
thita = Math.atan(Math.abs(y/x));
if (x < 0 && y >= 0) {
thita = Math.PI-thita;
}
else if (x < 0 && y < 0) {
thita = Math.PI+thita;
}
else if (x > 0 && y < 0) {
thita = Math.PI*2-thita;
}
}
else {
rou = y;
if (y >= 0) {
thita = Math.PI/2;
}
else {
thita = 3*Math.PI/2;
}
}
return [rou, thita];
}
function hint(string) {
document.write(string+'<br/>');
}</span>
<span style="font-size:18px;"> if (1) {
var r = 20;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0,180);
//坐标轴设定
var scaleX = 2*r, scaleY = 2*r;
var spaceX = 2, spaceY = 2;
var xS = -10, xE = 10;
var yS = -10, yE = 10;
config.axisSpacing(xS, xE, spaceX, scaleX, 'X');
config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');
var transform = new Transform();
//存放函数图像上的点
var a = [], b = [], c = [], d = [];
//需要显示的函数说明
//希腊字母表(存此用于Ctrl C/V
//ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
//αβγδεζηθικλμνξοπρστυφχψω
var f1 = 'ρ = 10cosθ', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var thita = 0; thita < Math.PI*2; thita +=Math.PI/24) {
pointA = [10*Math.cos(thita), thita];
a.push(polar2XY(pointA));
}
//存放临时数组
var tmp = [];
//显示变换
if (a.length > 0) {
a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);
//函数1
tmp = [].concat(a);
shape.pointDraw(tmp, 'red');
tmp = [].concat(a);
shape.multiLineDraw(tmp, 'pink');
plot.setFillStyle('red');
plot.fillText(f1, 100, -180, 200);
}
} </span>
<span style="font-size:18px;"> //需要显示的函数说明
//希腊字母表(存此用于Ctrl C/V
//ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
//αβγδεζηθικλμνξοπρστυφχψω
var f1 = 'ρ = 10', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var thita = 0; thita < Math.PI*2; thita +=Math.PI/24) {
pointA = [10, thita];
a.push(polar2XY(pointA));
}</span>
<span style="font-size:18px;"> var f1 = 'ρ = 10/cosθ', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var thita = 0; thita < Math.PI*2; thita +=Math.PI/24) {
pointA = [10/Math.cos(thita), thita];
a.push(polar2XY(pointA));
}</span>
<span style="font-size:18px;"> var f1 = 'ρ = 2sinθ', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var thita = 0; thita < Math.PI*2; thita +=Math.PI/24) {
pointA = [2*Math.sin(thita), thita];
a.push(polar2XY(pointA));
}</span>
<span style="font-size:18px;"> var f1 = 'ρ = 5sin(θ+1/4pi)', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var thita = 0; thita < Math.PI*2; thita +=Math.PI/24) {
pointA = [5*Math.sin(thita+Math.PI/4), thita];
a.push(polar2XY(pointA));
}</span>
<span style="font-size:18px;">//柱坐标转直角坐标
function cylin2XYZ(point) {
var rou = point[0], thita = point[1], z = point[2];
return [rou*Math.cos(thita), rou*Math.sin(thita), z];
}
//直角坐标转为柱坐标
function XYZ2cylin(point) {
var x = point[0], y = point[1], z = point[2];
var polar = XY2polar([x, y]);
return [polar[0], polar[1], z];
}
//球坐标转直角坐标
function sphere2XYZ(point) {
//P(r, psai, thita)
var r = point[0], psai = point[1], thita = point[2];
return [r*Math.sin(psai)*Math.cos(thita), r*Math.sin(psai)*Math.sin(thita), r*Math.cos(psai)];
}
//直角坐标转为球坐标
function XYZ2sphere(point) {
var x = point[0], y = point[1], z = point[2];
var r = Math.sqrt(x*x + y*y+z*z);
return [r, Math.acos(z/r), Math.atan(y/x)];
}</span>
<span style="font-size:18px;"> var f1 = 'x = 3t, y = 2t^2+1', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([3*t, 2*t*t+1]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=rcos(t), y = rsin(t)', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([10*Math.cos(t), 10*Math.sin(t)]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=3cost, y = 2sint', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([3*Math.cos(t), 2*Math.sin(t)]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=3/cost, y = 2tant', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([3/Math.cos(t), 2*Math.tan(t)]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=2/tan^2(t), y = 2/tant', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([2/Math.pow(Math.tan(t),2), 2/Math.tan(t)]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=5+0.5t, y = 4+0.866t', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([5 + t*0.5, 4+t*0.866]);
}
</span>
<span style="font-size:18px;"> var f1 = 'x=r(cost+tsint), y = r(sint-tcost)', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -5; t <= 5; t+=0.2) {
a.push([(Math.cos(t)+t*Math.sin(t)), (Math.sin(t)-t*Math.cos(t))]);
}</span>
<span style="font-size:18px;"> var f1 = 'x=r(t-tsint), y = r(1-cost)', f2 = '', f3 = '', f4 = '';
//函数描点
//参数方程
var x, y;
var pointA = [];
for (var t = -8; t <= 8; t+=0.2) {
a.push([(t-Math.sin(t)), (1 - Math.cos(t))]);
}</span>
<span style="font-size:18px;"> var f1 = '内摆线 x = cost+cos(nt)/n, y = sint-sin(nt)/n, n=3', f2 = '', f3 = '', f4 = '';
var r_1 = 1, r_2 = 4*r_1;
//函数描点
//参数方程
var x, y;
var pointA = [];
var angle = 0;
//思考:
//angle = r_1*(t-sin(t))/r_2*2pi
//angle2 = t - Math.floor(t/2pi)
//x = r_2cos(a)-r_1cos(a2)
//y = r_2sin(a)- r_1sin(a2)
//正确内摆线公式
//x = cost+cos(nt)/n, y = sint-sin(nt)/n
var N = 3; //外径与内径比例-1
for (var t = -8; t <= 8; t+=0.2) {
a.push([Math.cos(t)+Math.cos(N*t)/N, Math.sin(t)-Math.sin(N*t)/N]);
}</span>
<span style="font-size:18px;"> if (1) {
var r = 20;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0,180);
//坐标轴设定
var scaleX = 2*r, scaleY = 2*r;
var spaceX = 0.5, spaceY = 0.5;
var xS = -10, xE = 10;
var yS = -10, yE = 10;
config.axisSpacing(xS, xE, spaceX, scaleX, 'X');
config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');
var transform = new Transform();
//存放函数图像上的点
var a = [], b = [], c = [], d = [];
//需要显示的函数说明
//希腊字母表(存此用于Ctrl C/V
//ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
//αβγδεζηθικλμνξοπρστυφχψω
var f1 = '内摆线 x = cost+cos(nt)/n, y = sint-sin(nt)/n, n=4', f2 = '', f3 = '', f4 = '';
var r_1 = 1, r_2 = 4*r_1;
//函数描点
//参数方程
var x, y;
var pointA = [];
var angle = 0;
//思考:
//angle = r_1*(t-sin(t))/r_2*2pi
//angle2 = t - Math.floor(t/2pi)
//x = r_2cos(a)-r_1cos(a2)
//y = r_2sin(a)- r_1sin(a2)
//正确内摆线公式
//x = cost+cos(nt)/n, y = sint-sin(nt)/n
var N = 4; //外径与内径比例-1
for (var t = -8; t <= 8; t+=0.1) {
a.push([Math.cos(t)+Math.cos(N*t)/N, Math.sin(t)-Math.sin(N*t)/N]);
}
//存放临时数组
var tmp = [];
//显示变换
if (a.length > 0) {
a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);
//函数1
tmp = [].concat(a);
shape.pointDraw(tmp, 'blue');
tmp = [].concat(a);
shape.multiLineDraw(tmp, '#8822FF');
plot.setFillStyle('blue');
plot.fillText(f1, 30, -150, 200);
}
}
</span>
<span style="font-size:18px;"> if (1) {
var r = 20;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0,180);
//坐标轴设定
var scaleX = 2*r, scaleY = 2*r;
var spaceX = 0.8, spaceY = 0.8;
var xS = -10, xE = 10;
var yS = -10, yE = 10;
config.axisSpacing(xS, xE, spaceX, scaleX, 'X');
config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');
var transform = new Transform();
//存放函数图像上的点
var a = [], b = [], c = [], d = [];
//需要显示的函数说明
//希腊字母表(存此用于Ctrl C/V
//ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
//αβγδεζηθικλμνξοπρστυφχψω
var f1 = '外摆线 x = (a+b)cost-bcos((a+b)/bt), y = (a+b)sint-bsin((a+b)/bt), a:b = 1 : 1 ', f2 = '', f3 = '', f4 = '';
var r_1 = 1, r_2 = 4*r_1;
//函数描点
//参数方程
var x, y;
var pointA = [];
var angle = 0;
//外摆线公式
//x = cost+cos(nt)/n, y = sint-sin(nt)/n
var N1 = 1, N2 = 1; //外径与内径比例-1
for (var t = -10; t <= 10; t+=0.2) {
a.push([(N1+N2)*Math.cos(t)-N2*Math.cos((N1+N2)/N2*t),
(N1+N2)*Math.sin(t)-N2*Math.sin((N1+N2)/N2*t)]);
}
//存放临时数组
var tmp = [];
//显示变换
if (a.length > 0) {
a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);
//函数1
tmp = [].concat(a);
shape.pointDraw(tmp, 'blue');
tmp = [].concat(a);
shape.multiLineDraw(tmp, '#8822FF');
plot.setFillStyle('blue');
plot.fillText(f1, 30, -150, 200);
}
} </span>
本节到此结束,欲知后事如何,请看下回分解。
标签:
原文地址:http://blog.csdn.net/mwsister/article/details/51303638