Javascript 根据大小计算不透明度值
我试图根据对象的大小反向计算不透明度。基本上,它越大,就越透明 对象大小的计算如下所示:Javascript 根据大小计算不透明度值,javascript,math,Javascript,Math,我试图根据对象的大小反向计算不透明度。基本上,它越大,就越透明 对象大小的计算如下所示: var baseSize = 60; var sVariance = 4; var outputA = []; function blah() { for (i = 0; i < 5; i++) { this.newSize = Math.ceil(baseSize - (Math.random() * sVariance)); outputA[i] = th
var baseSize = 60;
var sVariance = 4;
var outputA = [];
function blah() {
for (i = 0; i < 5; i++) {
this.newSize = Math.ceil(baseSize - (Math.random() * sVariance));
outputA[i] = this.newSize;
}
document.writeln("Size = "+outputA);
}
blah();
var baseSize=60;
var变异=4;
变量输出=[];
函数blah(){
对于(i=0;i<5;i++){
this.newSize=Math.ceil(baseSize-(Math.random()*sVariance));
outputA[i]=this.newSize;
}
document.writeln(“Size=“+outputA”);
}
诸如此类;
…我希望能够计算大小范围之间的不透明度强度。例如,如果生成的5个大小为:60,59,58,57,59,我希望相应的不透明度值为:.25、.5、.75,1、.5
如果已经涵盖了类似的内容,我很抱歉,但是如果您能提供任何帮助,我们将不胜感激。听起来您希望对数据进行规范化,以便最大值为1,最小值为某个分数。这将有助于定义你想要的分数(例如,总是0.25,1/#的值)。如何规范化数据取决于该选择 考虑用列表中的最小值减去所有值,或用最大值除以所有值,或两者兼而有之。
函数getSizes(baseSize,sVariance){
function getSizes(baseSize, sVariance) {
var sizes = [];
for (i = 0; i < 5; i++) {
sizes[i] = Math.ceil(baseSize - (Math.random() * sVariance));
}
return sizes;
}
function calculateOpacityValues(baseSize, sVariance) {
var min = 0.25, max = 1,
step = 0.75 / sVariance, i,
opacityValues = {};
for (i = 0; i <= sVariance; i++) {
opacityValues[baseSize - i] = min + step * i;
}
return opacityValues;
}
function getOpacities(sizes, opacityValues) {
// create a map of opacities
// and your expected values
var opacities = [];
sizes.forEach(function(value, index) {
opacities[index] = opacityValues[value];
});
return opacities;
}
var baseSize = 60, sVariance = 3,
sizes = getSizes(baseSize, sVariance);
console.log(sizes);
// use the map to get the opacity
console.log(getOpacities(sizes, calculateOpacityValues(baseSize, sVariance)));
变量大小=[];
对于(i=0;i<5;i++){
size[i]=Math.ceil(baseSize-(Math.random()*sVariance));
}
返回大小;
}
函数CalculatePocityValues(baseSize、sVariance){
最小值为0.25,最大值为1,
阶跃=0.75/s变化,i,
不透明值={};
对于(i=0;i这是我将使用的函数。您可以看到在函数中转换值的逻辑。还有一个示例
请注意,$.map
函数是一个jQuery函数,可以非常方便地转换数组项。如果不使用jQuery,可以将其替换为for循环
函数getOpacityArray(sizeArray,最大值,范围){
return$.map(sizerray,函数(n,i){
返回(最大n)/范围;
});
}
因此,在您的示例中,您可以在计算大小数组后获得不透明度数组,如下所示:
var baseSize=60,
变量=4,
outputA=[],
不透明=[];
函数blah(){
对于(i=0;i<5;i++){
this.newSize=Math.ceil(baseSize-(Math.random()*sVariance));
outputA[i]=this.newSize;
}
document.writeln(“Size=“+outputA”);
opacityA=getOpacityArray(输出、基尺寸、变量);
}
诸如此类;
很抱歉,我没有澄清,但baseSize和sVariance是用户设置的变量。