var multiply = function (num1, num2) { if (num1 === '0' || num2 === '0') return '0' let len1 = num1.length, len2 = num2.length, res = new Array(len1 + len2).fill(0) for (let i = len1 - 1; i >= 0; i--) { for (let j = len2 - 1; j >= 0; j--) { const mul = num1[i] * num2[j] const p1 = i + j, p2 = i + j + 1 const sum = mul + res[p2] res[p1] += Math.floor(sum / 10) res[p2] = sum % 10 } } if (res[0] === 0) res.shift() return res.join("") };
时间: 2024-02-15 14:28:35 浏览: 32
这是一个实现两个字符串的乘法的函数,函数名为multiply,参数为num1和num2。
首先,判断num1和num2是否有一个为0,如果有,直接返回'0'。
接着,定义变量len1为num1的长度,变量len2为num2的长度,变量res为长度为len1+len2的数组,用于存储乘积。
然后,使用两个嵌套的循环遍历num1和num2中的每个数字,并计算它们的乘积和对应的进位。
具体来说,在外层循环中,从num1的最后一位开始遍历,内层循环也是从num2的最后一位开始遍历。
假设当前遍历到num1的第i位,遍历到num2的第j位,那么它们的乘积就是num1[i] * num2[j]。
由于乘积结果可能大于10,所以需要定义两个指针p1和p2来保存进位的值。p1的初始值为i+j,p2的初始值为i+j+1。
然后,计算当前乘积加上p2位置的进位值res[p2]的和,得到sum = mul + res[p2]。
将sum的十位数加到res[p1]中,将sum的个位数保存到res[p2]中。
最后,如果res的第一个数字为0,需要将其去掉,然后将数组转换为字符串返回即可。
需要注意的是,在乘法计算中,num1和num2中的数字都是按照字符串的形式进行处理的,不需要将其转换为整型数再进行计算。
相关问题
将 czm_material czm_getMaterial(czm_materialInput materialInput) { czm_material material = czm_getDefaultMaterial(materialInput); material.diffuse = 1.5 * color.rgb; vec2 st = materialInput.st; vec3 str = materialInput.str; float dis = distance(st, vec2(0.5, 0.5)); float per = fract(time); if (abs(str.z) > 0.001) { discard; } if (dis > 0.5) { discard; } else { float perDis = 0.5 / count; float disNum; float bl = .0; for (int i = 0; i <= 9; i++) { if (float(i) <= count) { disNum = perDis *float(i) - dis + per / count; if (disNum > 0.0) { if (disNum < perDis) { bl = 1.0 - disNum / perDis; } else if(disNum - perDis < perDis) { bl = 1.0 - abs(1.0 - disNum / perDis); } material.alpha = pow(bl, gradient); } } } } return material; } 翻译成成cesium webgl2标准
Here is the translation of the code into Cesium WebGL2 standard:
```javascript
function czm_getMaterial(materialInput) {
var material = czm_getDefaultMaterial(materialInput);
material.diffuse = color.rgb.multiply(1.5);
var st = materialInput.st;
var str = materialInput.str;
var dis = Cesium.distance(st, new Cesium.Cartesian2(0.5, 0.5));
var per = Cesium.fract(time);
if (Math.abs(str.z) > 0.001) {
discard;
}
if (dis > 0.5) {
discard;
} else {
var perDis = 0.5 / count;
var disNum;
var bl = 0.0;
for (var i = 0; i <= 9; i++) {
if (i <= count) {
disNum = perDis * i - dis + per / count;
if (disNum > 0.0) {
if (disNum < perDis) {
bl = 1.0 - disNum / perDis;
} else if (disNum - perDis < perDis) {
bl = 1.0 - Math.abs(1.0 - disNum / perDis);
}
material.alpha = Math.pow(bl, gradient);
}
}
}
}
return material;
}
```
GEE使用Sentinel-1数据IEM模型土壤湿度反演代码
Sentinel-1数据可以用于土壤湿度反演,在Google Earth Engine (GEE)中有现成的IEM模型可以使用。以下是使用IEM模型进行土壤湿度反演的GEE代码示例:
```javascript
// 选择AOI
var aoi = ee.Geometry.Rectangle([113.5, 34.3, 114.2, 34.8]);
// 选择Sentinel-1 GRD数据
var collection = ee.ImageCollection('COPERNICUS/S1_GRD')
.filterBounds(aoi)
.filterDate('2019-06-01', '2019-07-01')
.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))
.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
.filter(ee.Filter.eq('instrumentMode', 'IW'));
// 将数据转换为dB单位
var toDb = function(image){
return ee.Image(10.0).multiply(image.log10()).select(0).copyProperties(image,['system:time_start','system:time_end']);
};
var collectionDb = collection.map(toDb);
// 获取每个像素点的角度信息
var angle = collection.first().select('angle');
// 定义常数
var a = 0.0000107;
var b = 0.9391;
// 计算反演土壤湿度的函数
var invert = function(image){
var hh = image.select('VV');
var hv = image.select('VH');
var gamma = hh.divide(hv).atan();
var num = hh.add(hv).divide(2).multiply(Math.sin(gamma));
var den = hh.subtract(hv).divide(2).multiply(Math.cos(gamma));
var theta = num.divide(den).atan();
var cosTheta = theta.cos();
var moisture = cosTheta.expression(
'(a + b * cosTheta) / (cosTheta + 1)', {
'cosTheta': cosTheta.select(0),
'a': a,
'b': b
});
return moisture.copyProperties(image,['system:time_start','system:time_end']);
};
// 反演土壤湿度
var inverted = collectionDb.map(invert);
// 将结果可视化
Map.addLayer(inverted.first(), {min:0, max:0.5}, 'Soil Moisture');
```
需要注意的是,IEM模型只适用于粗糙表面(如耕地和草地),并且需要进行一些后处理操作,例如空间过滤和时间平滑等,以获得可靠的结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)