小编Ste*_*son的帖子

Threejs:为几何体中的每个顶点指定不同的颜色

我想通过Three.js中的IdMapping进行选择

由于性能问题,我只有一个巨大的几何体,计算如下:

for (var i = 0; i < numberOfVertices; i += 9) {
  p1  = new THREE.Vector3(graphData.triangles.vertices[i+0], graphData.triangles.vertices[i+1], graphData.triangles.vertices[i+2]);
  p2  = new THREE.Vector3(graphData.triangles.vertices[i+3], graphData.triangles.vertices[i+4], graphData.triangles.vertices[i+5]);
  p3  = new THREE.Vector3(graphData.triangles.vertices[i+6], graphData.triangles.vertices[i+7], graphData.triangles.vertices[i+8]);
  geometry.vertices.push(new THREE.Vertex( p1.clone() ));
  geometry.vertices.push(new THREE.Vertex( p2.clone() ));
  geometry.vertices.push(new THREE.Vertex( p3.clone() ));
  geometry.faces.push( new THREE.Face3( i/3, i/3+1, i/3+2 ) );

  // i want to do something like this:
  geometry.colors.push(new THREE.Color(0xFF0000));
  geometry.colors.push(new THREE.Color(0xFF0000));
  geometry.colors.push(new THREE.Color(0xFF0000)); 
}

geometry.computeFaceNormals();
var material = new THREE.MeshBasicMaterial({});

var triangles = new THREE.Mesh( geometry, material …
Run Code Online (Sandbox Code Playgroud)

javascript picking webgl three.js

18
推荐指数
3
解决办法
3万
查看次数

删除dat.Gui中的文件夹

我正在使用dat.GUI并想要用新内容替换文件夹.

var gui = new dat.GUI();
var folder = gui.addFolder('someString');

// sometime later ...
var newFolder = gui.addFolder('someString'); // causes an error
Run Code Online (Sandbox Code Playgroud)

所以我需要一种方法来删除以前的文件夹或替换其内容.

有任何想法吗?

javascript dat.gui

4
推荐指数
1
解决办法
2735
查看次数

qvariant是qhash的关键

我想用QVariants创建一个数据结构.它看起来像这样:

QHash<QPair<QVariant, QVariant>, SHAPES::Shape* > _shapes;
Run Code Online (Sandbox Code Playgroud)

不幸的是,"没有匹配函数来调用'qHash(const QVariant&)'".

所以我为QVariants定义了自己的qHash实现:

#pragma once

#include <QVariant>
#include <QHash>

uint qHash( const QVariant & var )
{
    if ( !var.isValid() || var.isNull() )
        //return -1;
        Q_ASSERT(0);

    switch ( var.type() )
    {
        case QVariant::Int:
                return qHash( var.toInt() );
            break;
        case QVariant::UInt:
                return qHash( var.toUInt() );
            break;
        case QVariant::Bool:
                return qHash( var.toUInt() );
            break;
        case QVariant::Double:
                return qHash( var.toUInt() );
            break;
        case QVariant::LongLong:
                return qHash( var.toLongLong() );
            break;
        case QVariant::ULongLong:
                return qHash( var.toULongLong() );
            break;
        case …
Run Code Online (Sandbox Code Playgroud)

qt key qvariant qhash

3
推荐指数
1
解决办法
2844
查看次数

增强函数原型以在执行之前调用给定函数

我想为JavaScript函数做一个类似AOP的"之前"功能.

所以我寻找现有的解决方案,找到了jQuery的aop-plugin.不幸的是,插件只是包装给定的功能.因此,在增强函数之前指向原始函数的任何对象仍然指向原始函数.从这些对象调用该函数会调用该函数的非增强版本.

我想改变函数对象本身,而不是用其他函数包装函数,所以以前的引用不会导致意外的行为.所以我有这样的事情:

(function(){}).constructor.prototype.before = function(beforeFunction){
    this.beforeFunction = beforeFunction;
};

/* some magic should happen here: enhance call? */

function logFoo() {
    console.log("Foo");
};
function logBar() {
    console.log("Bar");
};

logFoo(); // logs "Foo"

logFoo.before(logBar);

logFoo(); // should log "Bar", then "Foo"
Run Code Online (Sandbox Code Playgroud)

所以问题是,当调用增强函数时,如何调用beforeFunction?

javascript aop prototype function function-prototypes

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