小编mob*_*v07的帖子

计算简单三角形的每面法线

我一直在搞一些 3D 的东西(更具体地说是 LibGdx,但这对这个问题无关紧要),最近我发现了一个问题,试图计算一个简单三角形的每面法线。
我生成的三角形网格具有以下顶点(也显示在下面的链接中):

v0 = [3 , 0 , 0] //X, Y, Z
v1 = [1.49 , 0.86 , 0] //X, Y, Z
v2 = [3 , 0 , -1] //X, Y, Z

为了计算三角形网格的面法线,我使用了一个可以在许多教程/示例网站中找到的函数(稍作修改):

private Vector3 calculateNormal(float vX1, float vY1, float vZ1,
                                浮动 vX2,浮动 vY2,浮动 vZ2,
                                浮动 vX3,浮动 vY3,浮动 vZ3) {

        Vector3 edge1 = new Vector3(vX1, vY1, vZ1).sub(vX2, vY2, vZ2);
        Vector3 edge2 = new Vector3(vX2, vY2, vZ2).sub(vX3, vY3, vZ3);

        Vector3 crsProd = edge1.crs(edge2); // edge1 和 edge2 的叉积 …

java opengl 3d opengl-es libgdx

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

JS Arrays如何在内部调整大小?

所以我一直在尝试在JS中实现一个集合类型的类(类似于在C#中找到的List),它具有一些自定义功能.我也希望它有所优化(我已经阅读了一些关于如何正确使用JS Arrays的文章).所以我想我自己"如果我们没有为数组定义一个初始大小,我们不断向它添加对象,在内部它必须为每个插入分配一个新的大小,这必须很慢.我可以通过分配来避免这种情况我自己的新尺寸(改变阵列长度),有点类似于在CSharp中完成的尺寸,每当达到最大容量时尺寸加倍(我知道这不是微不足道但它是一个开始)"

我试图实现这个想法,发现它慢了(慢10倍):

//This simplified approach of my implementation is faster...
var array = [];
var counter = 0;
function addItem(newItem) {
    array[++counter] = newItem;
}

//..than this version that resizes the array when a limit is reached
var array = [];
array.length = INITIAL_SIZE;
/*
 Alternatively
 var array = new Array(INITIAL_SIZE);
*/
var counter = 0;
function addItem(newItem) {
    if( CheckCapacity(counter + 1) ) { //Function that checks if the maximum size is reached and if it is, change …
Run Code Online (Sandbox Code Playgroud)

javascript arrays performance

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

标签 统计

3d ×1

arrays ×1

java ×1

javascript ×1

libgdx ×1

opengl ×1

opengl-es ×1

performance ×1