简单的3D粒子重力javascript
Simple 3D particle gravity in javascript?
我试图在我的3D环境中做一些简单的重力处理(我使用的是three.js)。我有一些代码,但是不能用。我希望它只是某个地方的一只愚蠢的虫子。编辑:替换旧代码
function handleGravity() {
for(var j = 0; j < spheres.length; j++) {
for(var i = 0; i < spheres.length; i++) {
var r1 = new Array( spheres[j].position.x, spheres[j].position.y, spheres[j].position.z);
var r2 = new Array( spheres[i].position.x, spheres[i].position.y, spheres[i].position.z);
var r12 = new Array(r2[0]-r1[0], r2[1]-r1[1], r2[2]-r1[2]);
var r12UnitVector = new Array( r12[0]/Math.abs(r12[0]), r12[1]/Math.abs(r12[1]),r12[2]/Math.abs(r12[2]) );
var m1 = masses[j];
var m2 = masses[i];
var r12Squared = r12[0]*r12[0] + r12[1]*r12[1] + r12[2]*r12[2];
var a12 = new Array( -(gravConst*m2/r12Squared)*r12UnitVector[0], -(gravConst*m2/r12Squared)*r12UnitVector[1], -(gravConst*m2/r12Squared)*r12UnitVector[2]);
velocities[j][0] += a12[0]*timePassed;
velocities[j][1] += a12[1]*timePassed;
velocities[j][2] += a12[2]*timePassed;
}
}
}
如果你能看到任何错误,或给我任何提示使用JavaScript模拟许多粒子在3D环境中最有效的(我是非常新的物理+模拟),那将是了不起的!
这似乎可以工作:
function handleGravity() {
for(var j = 0; j < spheres.length; j++) {
for(var i = 0; i < spheres.length; i++) {
if(i != j) {
var r1 = new Array( spheres[j].position.x, spheres[j].position.y, spheres[j].position.z);
var r2 = new Array( spheres[i].position.x, spheres[i].position.y, spheres[i].position.z);
var r12 = new Array(r2[0]-r1[0], r2[1]-r1[1], r2[2]-r1[2]);
var r12UnitVector = new Array( r12[0]/Math.abs(r12[0] + r12[1] + r12[2])/3, r12[1]/Math.abs(r12[0] + r12[1] + r12[2])/3, r12[2]/Math.abs(r12[0] + r12[1] + r12[2])/3 );
var m1 = masses[j];
var m2 = masses[i];
var r12Squared = r12[0]*r12[0] + r12[1]*r12[1] + r12[2]*r12[2];
var a12 = new Array( -(gravConst*m2/r12Squared)*r12UnitVector[0], -(gravConst*m2/r12Squared)*r12UnitVector[1], -(gravConst*m2/r12Squared)*r12UnitVector[2]);
velocities[j][0] -= a12[0]*timePassed;
velocities[j][1] -= a12[1]*timePassed;
velocities[j][2] -= a12[2]*timePassed;
}
}
}
}
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 围绕圆环的Javascript粒子动画
- 开始使用javascript中的动画排版/粒子(将粒子映射到单词)
- Javascript开源移动游戏引擎与音频和粒子
- javascript粒子性能背后的原因与其他软件和程序相比有很多
- 简单的3D粒子重力javascript
- javascript中的高效粒子系统?(WebGL)
- Javascript绘制粒子
- 使用CSS掩码屏蔽javascript创建的粒子
- 如何在JavaScript/jQuery中为粒子系统重用数组中的对象