小编tur*_*ics的帖子

R 将“TRUE”字符串强制为 TRUE 逻辑是怎么回事?

所以,我发现了这一点:

> TRUE == "TRUE"
[1] TRUE
> TRUE == "BOO"
[1] FALSE
> TRUE == "true"
[1] FALSE
> TRUE == "T"
[1] FALSE
> FALSE == "FALSE"
[1] TRUE
> FALSE == "F"
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

根据 R 文档logical {base}

as.logic 尝试将其参数强制为逻辑类型。字符串 c("T", "TRUE", "True", "true") 视为 true,c("F", "FALSE", "False", "false") 视为 false,其他所有视为 false不适用。

实际情况是这样的:

> as.logical("T")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

显然,发生的事情TRUE == "T"并不是一种as.logical转变。对于这些 == 比较的行为有任何合理的解释吗?

string boolean r coercion

7
推荐指数
1
解决办法
9872
查看次数

在three.js着色器中使用灯光

我正试图从three.js中的着色器访问场景的灯光.

这个问题几乎与Three.js ShaderMaterial问题重复,但对该问题 的评论并没有帮我解决问题.

这是顶点着色器:

#if NUM_DIR_LIGHTS > 0
    struct DirectionalLight {
        vec3 direction;
        vec3 color;
        int shadow;
        float shadowBias;
        float shadowRadius;
        vec2 shadowMapSize;
     };
     uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
#endif
  varying vec3 color;
  void main() {
     float r = directionalLights[0].color.r;
     color = vec3(r,1.0,0.0);
     gl_Position = projectionMatrix * modelViewMatrix * vec4(position , 1.0);
  }
Run Code Online (Sandbox Code Playgroud)

和相关的ShaderMaterial:

var material = new THREE.ShaderMaterial({
    uniforms: THREE.UniformsLib['lights'],
    vertexShader: document.getElementById('vertexShader').innerHTML,
    fragmentShader: document.getElementById('fragmentShader').innerHTML,
    lights : true
  });
Run Code Online (Sandbox Code Playgroud)

我在这里发布了整个示例代码:https://jsfiddle.net/zhkvcajs/

删除lights : …

shader three.js

2
推荐指数
1
解决办法
3988
查看次数

标签 统计

boolean ×1

coercion ×1

r ×1

shader ×1

string ×1

three.js ×1