如果向量有 4 个分量,则在 y 轴上映射向量
Mapping a vector across the y-axis if it has 4 components
我正在节点上施加力和扭矩。这是我的代码:
myNode?.physicsBody?.applyForce(SCNVector3Make(0, -6, 4), atPosition: SCNVector3Make(0, 1, -1), impulse: true)
myNode?.physicsBody?.applyForce(SCNVector3Make(0, -2, 10), impulse: true)
myNode?.physicsBody?.applyTorque(SCNVector4Make(4, 2, 2.5, 1.6), impulse: true)
物体现在落下,然后从左向右移动。我希望它落下并从右向左移动(基本上反映了 y 轴上的第一次移动)。我发现对于前两行代码我无能为力,因为力没有 x 分量。最后一行 applyTorque
是我需要操作的那一行。如果向量有 4 个分量,你如何映射到 y 轴?我对数学有点生疏
applyTorque 函数的完整版本如下所示:
.applyTorque(SCNVector4Make(x:, y:, z:, w:), impulse:)
所以你放在第二个位置的任何数字都应该是围绕 y 轴的扭矩量。
数字和它们在物体上产生的旋转力之间可能存在某种关系,但我一直只是通过反复试验来找到可行的方法。有时是巨大的数字。
根据SceneKit documentation the SCNVector4参数指定方向(x,y,z向量分量)和大小(w向量分量) 以牛顿-米为单位的力。要反映所施加扭矩的方向,您所要做的就是反转大小。 (x, y, z, -magnitude)
我假设 x 轴是水平的,y 轴是垂直的,z 轴直接指向你(见下面的黑色箭头):
我发现evidence在SceneKit中确实是这样的
如果
applyTorque(SCNVector4Make(x, y, z, w), impulse: boolean)
是正确的用法,那么x
就是绕x轴逆时针旋转的量(见绿色圆圈箭头),同理y
和z
.同样,这是我最好的猜测,SceneKit 可能使用顺时针旋转。因此,x
、y
、z
共同决定了扭力的旋转轴。
这是一种更简单的思考方式。 x
、y
和 z
在上述 3D space 中创建矢量。对象将围绕该向量逆时针旋转。
w
是力矩的大小,与旋转轴无关
您对 "map vector across the y-axis" 的请求实际上是在 yz 平面上的反射。仔细想想,你想要的是绕y轴旋转相反的方向(取反y
),z也一样。
所以答案应该是:
myNode?.physicsBody?.applyTorque(SCNVector4Make(4, -2, -2.5, 1.6), impulse: true)
我正在节点上施加力和扭矩。这是我的代码:
myNode?.physicsBody?.applyForce(SCNVector3Make(0, -6, 4), atPosition: SCNVector3Make(0, 1, -1), impulse: true)
myNode?.physicsBody?.applyForce(SCNVector3Make(0, -2, 10), impulse: true)
myNode?.physicsBody?.applyTorque(SCNVector4Make(4, 2, 2.5, 1.6), impulse: true)
物体现在落下,然后从左向右移动。我希望它落下并从右向左移动(基本上反映了 y 轴上的第一次移动)。我发现对于前两行代码我无能为力,因为力没有 x 分量。最后一行 applyTorque
是我需要操作的那一行。如果向量有 4 个分量,你如何映射到 y 轴?我对数学有点生疏
applyTorque 函数的完整版本如下所示:
.applyTorque(SCNVector4Make(x:, y:, z:, w:), impulse:)
所以你放在第二个位置的任何数字都应该是围绕 y 轴的扭矩量。
数字和它们在物体上产生的旋转力之间可能存在某种关系,但我一直只是通过反复试验来找到可行的方法。有时是巨大的数字。
根据SceneKit documentation the SCNVector4参数指定方向(x,y,z向量分量)和大小(w向量分量) 以牛顿-米为单位的力。要反映所施加扭矩的方向,您所要做的就是反转大小。 (x, y, z, -magnitude)
我假设 x 轴是水平的,y 轴是垂直的,z 轴直接指向你(见下面的黑色箭头):
我发现evidence在SceneKit中确实是这样的
如果
applyTorque(SCNVector4Make(x, y, z, w), impulse: boolean)
是正确的用法,那么x
就是绕x轴逆时针旋转的量(见绿色圆圈箭头),同理y
和z
.同样,这是我最好的猜测,SceneKit 可能使用顺时针旋转。因此,x
、y
、z
共同决定了扭力的旋转轴。
这是一种更简单的思考方式。 x
、y
和 z
在上述 3D space 中创建矢量。对象将围绕该向量逆时针旋转。
w
是力矩的大小,与旋转轴无关
您对 "map vector across the y-axis" 的请求实际上是在 yz 平面上的反射。仔细想想,你想要的是绕y轴旋转相反的方向(取反y
),z也一样。
所以答案应该是:
myNode?.physicsBody?.applyTorque(SCNVector4Make(4, -2, -2.5, 1.6), impulse: true)