首页 > 解决方案 > 渲染对象实例中的颜色不正确,我在整个该死的世界中完全不知道为什么

问题描述

我得到的只是一个带有 rgb(0,255,255) 的小正方形,我希望“r”与对数成比例(betterLog 是对数函数(base,answer)=exponent

一切

var ln = function(g){

    var n=g;
    n=abs(n);
    if(n>1){
        n=1/n;
    }
    var x=n-1;
    var output = x;
    var i;
    for(i = 2; i < 99; i++){
        if (i%2 === 0){
            output -= pow(x,i)/i;
        }
        if (i%2 === 1){
            output += pow(x,i)/i;
        }
    }
    return output;
};

var betterLog = function(a,b){
    var output = ln(b)/ln(a);
    return output;
};



var v=475;

var block = function(){
  this.render = function(){
    var stupidColor=(betterLog(2,v)*20);
    fill(stupidColor, 255, 255);
    rect(20,20,20,20);

  };
};

var newCrap = new block();


var draw = function() {
    newCrap.render(v);
};

它只是一个 rgb(0,255,255) idk,如果它的渲染是否正确或不是 js 的新手,它只是不能正常工作,本身没有错误

标签: javascriptrendering

解决方案


您只需要将Math对象添加到您的函数中

var ln = function(g){
    var n=g;
    n=Math.abs(n);
    if(n>1){
        n=1/n;
    }
    var x=n-1;
    var output = x;
    var i;
    for(i = 2; i < 99; i++){
        if (i%2 === 0){
            output -= Math.pow(x,i)/i;
        }
        if (i%2 === 1){
            output += Math.pow(x,i)/i;
        }
    }
    return output;
};

var betterLog = function(a,b){
    var output = ln(b)/ln(a);
    return output;
};

var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
var fill = function(r,g,b,a){
  ctx.fillStyle = 'rgba('+r+','+g+','+b+','+a||1+')';
};
var rect = function(x,y,w,h){
  ctx.fillRect(x,y,w,h);
};

var v=475;

var block = function(){
  this.render = function(v){
    var stupidColor=(betterLog(2,v)*20);
    fill(stupidColor, 255, 255);
    console.log({stupidColor});
    rect(20,20,20,20);
  };
};

var newCrap = new block();

var draw = function() {
    newCrap.render(v);
};

draw();
<canvas></canvas>


推荐阅读