设定颜色的一些坑
现象描述
主要问题出现在写 three.js
的时候,正在为一些直线设定 rgb
值。代码如下:
const lines: Line[] = [];
const gapX = 20;
const gapY = 20;
const gapZ = 20;
const range = 10;
for (let i = range; i > -range; i--) {
for (let j = range; j > -range; j--) {
const l = new Line(
new THREE.Vector3(0, 0, 0),
new THREE.Vector3(0, 0, -1),
300,
// new THREE.Color(`rgb(0, 0.1, 0.1)`)
new THREE.Color(`rgb(0, ${(i + range) / (range * 2) * 255}, ${(j + range) / (range * 2) * 255})`)
);
l.mesh.position.set(i * gapX, j * gapY, 150);
lines.push(l);
scene.add(l.mesh);
}
}
(没错这就是主页的代码)
这一行公式并没有问题,没有超出 rgb
规定的 0-255
的数值范围。但是很诡异的是,所有直线都显示为白色(rgb(0, 0, 0)
。这是为何?
解决
实际上,rgb
所规定的数值范围并非 0-255
,而是 [0, 255]
范围内所有的整数。。。
所以上面的代码只需要把高亮行改为:
new THREE.Color(
`rgb(0, ${Math.round((i + range) / (range * 2) * 255)}, ${Math.round((j + range) / (range * 2) * 255)})`
)
这样子,程序就可以正常运行了。
警示
注意函数的定义域(bushi
处理 rgb
值相关内容时把数值四舍五入为整数。
更新日志
2025/7/26 14:06
查看所有更新日志
e9db5
-fix(home): 优化陀螺仪计算于