天才普朗克凭借深厚数学功底,总结前人数据,得到了统一的全波段的单色辐射力公式,并推动了量子力学的发展。
绘制光谱辐射力曲线如下,根据动画,可以明显感知相同波长时不同温度下单色辐射力的不同:
微信小程序体验请点击 普朗克黑体单色辐射力
Talk is cheap, show me the code:
代码语言:javascript复制//Pages/sun/index.js
import * as echarts from '../../ec-canvas/echarts';
const app = getApp();
var [lmd, T173, T300, T1000,T2000]=[[],[],[],[],[]];
const c1=3.741e-16,c2=1.4388e-2;
let T=300;
var Planck=(L)=>{L/=1e6; return 1e-9*c1/(Math.exp(c2/L/T)-1)/L**5};//结果放大1E-9
function calcData(){
for(var i=0.35;i<15;i=i 0.1){
lmd.push(i);
}
T=173;
T173 = lmd.map(Planck);
T=300;
T300 = lmd.map(Planck);
T = 1000;
T1000 = lmd.map(Planck);
T = 2000;
T2000 = lmd.map(Planck);
}
var chart=null;
function initLineChart(canvas, width, height) {
chart = echarts.init(canvas, null, {
width: width,height: height
});
canvas.setChart(chart);
var option = {
title: {
text: '不同温度黑体单色辐射力',
left: 'center'
},
color: ["#00FF00", "#000000", "#0000FF", "#FF0000"],
legend: {
data: ['173K','300K','1000K','2000K'],
top: 25,left: 'center',z: 100
},
grid: {
containLabel: true
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: lmd,
// show: false
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
// show: false
},
series: [{
name: '173K',
type: 'line',
smooth: true,
data: T173
}, {
name: '300K',
type: 'line',
smooth: true,
data: T300
}, {
name: '1000K',
type: 'line',
smooth: true,
data: T1000
}, {
name: '2000K',
type: 'line',
smooth: true,
data: T2000
}]
};
chart.setOption(option);
return chart;
}
Page({
onShareAppMessage: function (res) {
return {
title: '单色辐射力!',
//path: '/pages/logs/logs',
success: function () { },
fail: function () { }
}
},
data: {
logs: [],
ec: {onInit: initLineChart}
},
onLoad: function () {
},
onHeat1D:function(){
calcData();
chart.setOption({ xAxis:{data:lmd}});
chart.setOption({ series: [{ data: T173 }, { data: T300 }, { data: T1000 }, { data: T2000 }] });
},
formReset:function(){
}
})
摘录其中的计算函数如下:
代码语言:javascript复制var [lmd, T173, T300, T1000,T2000]=[[],[],[],[],[]];
const c1=3.741e-16,c2=1.4388e-2;
let T=300;
var Planck=(L)=>{L/=1e6; return 1e-9*c1/(Math.exp(c2/L/T)-1)/L**5};//结果放大1E-9
function calcData(){
for(var i=0.35;i<15;i=i 0.1){
lmd.push(i);
}
T=173;
T173 = lmd.map(Planck);
T=300;
T300 = lmd.map(Planck);
T = 1000;
T1000 = lmd.map(Planck);
T = 2000;
T2000 = lmd.map(Planck);
}
没错使用了百度echarts组件库!再次感谢百度!(https://www.echartsjs.com/zh/index.html)