Three.js setHSL () устанавливает неожиданный цвет

Простой код работает для любого итерабельного объекта, а не только для списков:

>>> def empty(seq):
...     try:
...         return all(map(empty, seq))
...     except TypeError:
...         return False
...
>>> empty([])
True
>>> empty([4])
False
>>> empty([[]])
True
>>> empty([[], []])
True
>>> empty([[], [8]])
False
>>> empty([[], (False for _ in range(0))])
True
>>> empty([[], (False for _ in range(1))])
False
>>> empty([[], (True for _ in range(1))])
False

Этот код делает предположение, что все, что может быть повторено, будет содержать другие элементы и не должно рассматриваться как лист в дереве". Если попытка выполнить итерацию по объекту не удалась, то это не последовательность и, следовательно, конечно, не пустая последовательность (при этом возвращается False). Наконец, этот код использует тот факт, что all возвращает True, если его аргумент является пустой последовательностью.

1
задан godblessstrawberry 18 January 2019 в 14:11
поделиться

1 ответ

Выбор цвета идет от 0 до 360. setHSL идет от 0 до 1.

Если вы хотите получить оттенок 50 из 360, установите значение 50/360, равное 0,1388888888888889.

setHSL (0,1388888888888889, 1, 0,5) - желтый.

let camera, scene, renderer, material;

init();

function init() {

    camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
    camera.position.z = 1;

    scene = new THREE.Scene();

    const geometry = new THREE.PlaneGeometry();
    material = new THREE.MeshBasicMaterial( { color: 0xffffff } );
		material.color.setHSL( 0.1388888888888889, 1, 0.5 );
    
    const mesh = new THREE.Mesh( geometry, material );
    scene.add( mesh );

    renderer = new THREE.WebGLRenderer( { antialias: true } );
    renderer.setSize( window.innerWidth, window.innerHeight );
    document.body.appendChild( renderer.domElement );
    renderer.render( scene, camera );
}
body {
	  margin: 0;
}
<script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>

0
ответ дан prisoner849 18 January 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: