剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了筑基初期的修炼,
这次要修炼的目标是[不等式与不等式组]。

差不多可以了吧。
说起来,小伟昨天又玩了会球,然后发现原来的函数有问题:
比如还可以来个四国围棋:
还有小伟最爱的五行珠:
本节到此结束,欲知后事如何,请看下回分解。
[机器小伟]在[工程师阿伟]的陪同下进入了筑基初期的修炼,
这次要修炼的目标是[不等式与不等式组]。
正剧开始:
星历2016年03月07日 08:39:00, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[不等式与不等式组]。
蓝色线表示的是不等式的左边,红色线是表示的不等式的右边,y轴表示的是左边或右边的值。
可以看出,当购买的商品总价比较少时,蓝色线的值比较小,表示较便宜,如果买得多了,
红色线会更便宜。但转折点在哪里,并不怎么能看得清楚。
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 10;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0, 180);
var xArray = [-300, 300];
var yArray1 = [], yArray2 = [];
for (var i = 0; i < 2; i++) {
yArray1.push([xArray[i], 50+0.95*(xArray[i]-50)]);
yArray2.push([xArray[i], 100+0.9*(xArray[i]-100)]);
}
shape.multiLineDraw(yArray1, 'blue');
shape.multiLineDraw(yArray2, 'red');
}</span>
从这个图来看,或许转折点是在x=150处,是不是呢,小伟决定算一下:
...
经过计算,确实当x=150时红。蓝线的值相等。
小伟想试一试能不能用区域来表示出不等式组的范围:
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 10;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0, 180);
var x = [-300, 300], y;
var y1 = [], y2 = [];
plot.setGlobalAlpha(0.5)
.setGlobalCompositeOperation('source-over');
for (var i = 0; i < 2; i++) {
y = 40;
y1.push([x[i], y]);
y1.push([x[i], y+600]);
};
var tmp = shape.angularSort(y1);
shape.fillDraw(tmp, 'blue');
for (var i = 0; i < 2; i++) {
y = 50;
y2.push([x[i], y]);
y2.push([x[i], y-600]);
};
tmp = shape.angularSort(y2);
shape.fillDraw(tmp, 'yellow');
//shape.multiLineDraw(yArray2, 'red');
}</span>
差不多可以了吧。
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 10;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0, 180);
var x = [40, 50], y;
var y1 = [], y2 = [];
plot.setGlobalAlpha(0.6)
.setGlobalCompositeOperation('source-over');
x = 40;
y1.push([x, -300]);
y1.push([x, 300]);
y1.push([x+600, 300]);
y1.push([x+600, -300]);
var tmp = shape.angularSort(y1);
shape.fillDraw(tmp, 'blue');
x = 50;
y2.push([x, -300]);
y2.push([x, 300]);
y2.push([x-600, 300]);
y2.push([x-600, -300]);
tmp = shape.angularSort(y2);
shape.fillDraw(tmp, 'red');
//shape.multiLineDraw(yArray2, 'red');
}</span>
说起来,小伟昨天又玩了会球,然后发现原来的函数有问题:
这些球无法随心所欲地放到它们应该在的地方。
于是小伟做了改进:
这下就排得整齐了吧。
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 50;
config.setSector(1,1,1,1);
config.graphPaper3D(1, 0, 0, r);
config.axis3D(0, 0, 0, 180);
plot.save()
.translate(0, -r+0.707*r);
for (var i = -10; i < 10; i+=5) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -5; k < 5; k+=1) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
shape.sphere([k*r, 0*r, 0*r], r/3, 'yellow');
}
}
}
plot.restore();
}</span>
<span style="font-size:18px;">//绘制球体
this.sphere = function(pos/*[x, y, z]*/, r, style) {
plot.save();
var x, y;
var p = [].concat(pos);
if (p.length == 2) {
x = p[0];
y = p[1];
}
else if (p.length == 3) {
var p1 = shape.point3D(p[0], -p[1], p[2]);
x = p1[0];
y = p1[1];
}
var r0 = 0.1*r;
var grd = plot.createRadialGradient(x, y, r, x+0.3*r, y-0.3*r, r0);
grd.addColorStop(0, style);
grd.addColorStop(1, 'white');
plot.setFillStyle(grd);
shape.fillCircle(x, y, r);
plot.restore();
}</span>
<span style="font-size:18px;">this.strokeCubic = function(x0, y0, z0, r, style) {
plot.save();
x0 *= r;
y0 *= r;
z0 *= r;
r *= 0.5;
var array = [[-r, -r], [-r, r], [r, r], [r, -r]];
var top = [];
var left = [];
var front = [];
var x, y, z;
//存放临时点
var p = [];
for (var i = 0; i < 4; i++) {
x = (x0+array[i][0]);
y = y0+r;
z = (z0+array[i][1]);
p = this.point3D(x, y, z);
top.push([p[0], -p[1]]);
}
for (var i = 0; i < 4; i++) {
x = x0+r;
y = (y0+array[i][0])+2*r;
z = z0+array[i][1];
p = this.point3D(x, y, z);
left.push([p[0], -p[1]]);
}
for (var i = 0; i < 4; i++) {
x = x0+array[i][0];
y = (y0+array[i][1])+2*r;
z = z0+r;
p = this.point3D(x, y, z);
front.push([p[0], -p[1]]);
}
var tmp = [].concat(top);
shape.fillDraw(tmp, style);
tmp=[].concat(top);
shape.strokeDraw(tmp, '#cccccc');
tmp = [].concat(left);
shape.strokeDraw(left, 'black');
tmp = [].concat(front);
shape.strokeDraw(front, 'black');
plot.restore();
}</span>
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 50;
config.setSector(1,1,1,1);
config.graphPaper3D(1, 0, 0, r);
config.axis3D(0, 0, 0, 180);
var array = [];
plot.save()
.translate(0, -r+0.707*r);
for (var i = -5; i < 10; i+=5) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -5; k < 5; k+=1) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
for (var i = -10; i <= 10; i+=2) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -5; k <= 5; k+=5) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
array = shape.xyzSort(array);
var len = array.length;
for (var i =0; i < len; i++) {
if (i%3==0) {
shape.sphere(array[i], r/3, 'red');
}
else if (i%4==0) {
shape.sphere(array[i], r/3, 'blue');
}
else {
shape.sphere(array[i], r/3, 'green');
}
}
plot.restore();
}</span>
比如还可以来个四国围棋:
红、紫是一家,蓝、绿是一家,谁会赢呢?
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 10;
config.setSector(1,1,1,1);
config.graphPaper3D(1, 0, 0, r);
config.axis3D(0, 0, 0, 180);
var array = [];
plot.save()
.translate(0, -r+0.707*r);
for (var i = -19; i <= 19; i+=5) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -19; k <=19; k+=1) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
for (var i = -19; i <= 19; i+=2) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -19; k <= 19; k+=5) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
array = shape.xyzSort(array);
var len = array.length;
for (var i =0; i < len; i++) {
if (i%6==0) {
shape.sphere(array[i], r/3, 'red');
}
else if (i%4==0) {
shape.sphere(array[i], r/3, 'blue');
}
else if (i%5 == 0) {
shape.sphere(array[i], r/3, 'purple');
}
else {
shape.sphere(array[i], r/3, 'green');
}
}
plot.restore();
}
function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 50;
config.setSector(1,1,1,1);
config.graphPaper2D(0, 0, r);
config.axis2D(0, 0, 180);
var xArray = [-300, 300];
var yArray1 = [], yArray2 = [];
for (var i = 0; i < 2; i++) {
yArray1.push([xArray[i], 50+0.95*(xArray[i]-50)]);
yArray2.push([xArray[i], 100+0.9*(xArray[i]-100)]);
}
shape.multiLineDraw(yArray1, 'blue');
shape.multiLineDraw(yArray2, 'red');
}</span>
还有小伟最爱的五行珠:
<span style="font-size:18px;">function myDraw() {
var config = new PlotConfiguration();
config.init();
config.setPreference();
var r = 20;
config.setSector(1,1,1,1);
config.graphPaper3D(1, 0, 0, r);
config.axis3D(0, 0, 0, 180);
var array = [];
plot.save()
.translate(0, -r+0.707*r);
for (var i = -19; i <= 19; i+=5) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -19; k <=19; k+=1) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
for (var i = -19; i <= 19; i+=2) {//z向
for (var j = -1; j < 0; j++) {//y向
for (var k = -19; k <= 19; k+=5) {//x向
if (Math.abs(i * r) > 300 || Math.abs(k *r) > 300) continue;
array.push([k*r, 0*r, i*r]);
}
}
}
array = shape.xyzSort(array);
var len = array.length;
for (var i =0; i < len; i++) {
if (i%6==0) {//水
shape.sphere(array[i], r/3, 'cyan');
}
else if (i%7==0) {//木
shape.sphere(array[i], r/3, 'green');
}
else if (i%3 == 0) {//火
shape.sphere(array[i], r/3, 'red');
}
else if (i % 4 == 0) {//金
shape.sphere(array[i], r/3, '#E0D0D0');
}
else {//土
shape.sphere(array[i], r/3, '#886622');
}
}
plot.restore();
}</span>
本节到此结束,欲知后事如何,请看下回分解。