物体移动和旋转多少
How much object move and rotate
我创建了一个可以对物体施加力的系统。因此,当施加的力与质心不对齐时,物体开始旋转。当施加力时它也会移动。
但我开始想,当我在它的角落里推动 space 中的东西(如矩形)时,它会旋转并同时开始移动。所以能量被分配给直线运动和旋转速度,但比例如何?现在我以 100% 的效率将能量转移到两者。但如果你把所有的能量加起来,那将是我给的能量的两倍。
那么有人知道这个比率或方程式吗?
谢谢
毕达哥拉斯提取力分量
下图将有助于可视化力。
- A, B, C, D, E 和 M 是二维点
{x,y}
- 红色 AB 是向量形式的力。
- 点M是质心
- 蓝色BD是移动物体的力
- 绿色BE是旋转的力量
通过获取归一化向量 BM 和 AB 的叉积的反正弦来找到角度 Ɵ
旋转力是 AB * sin(Ɵ) 的长度,正确的方向(符号)将来自算法(BM x 的交叉AB) 并且跨国力是 AB * cos(Ɵ) 的长度并且沿着线 BM
伪代码
// 2D Points from diagram
A = {x,y};
B = {x,y};
M = {x,y};
// get length of vectors AB BM (^ is to the power of)
ABlen = ((B.x - A.x) ^ 2 + (B.y - A.y) ^ 2) ^ 0.5;
BMlen = ((B.x - M.x) ^ 2 + (B.y - M.y) ^ 2) ^ 0.5;
// Create normalized vectors AB and BM
ABnorm = {x : (B.x - A.x) / ABlen, y : (B.y - A.y) / ABLen};
BMnorm = {x : (M.x - B.x) / BMlen, y : (M.y - B.y) / BMLen};
// Get the angle Ɵ
Ɵ = asin(BMnorm.x * ABnorm.y - BMnorm.y * ABnorm.x);
// Rotational Force BE
rotateForce = ABlen * sin(Ɵ);
// Translational Force BD
translateForce = ABlen * cos(Ɵ);
// Translational force as a vector
translateForceVec = {x : ABnorm.x * translateForce, y : ABnorm.y * translateForce};
牛顿第二定律
力f
通过牛顿第二定律F = ma
得到加速度a = F / m
旋转力变成旋转加速度,但取决于物体的质量分布。
我创建了一个可以对物体施加力的系统。因此,当施加的力与质心不对齐时,物体开始旋转。当施加力时它也会移动。 但我开始想,当我在它的角落里推动 space 中的东西(如矩形)时,它会旋转并同时开始移动。所以能量被分配给直线运动和旋转速度,但比例如何?现在我以 100% 的效率将能量转移到两者。但如果你把所有的能量加起来,那将是我给的能量的两倍。 那么有人知道这个比率或方程式吗?
谢谢
毕达哥拉斯提取力分量
下图将有助于可视化力。
- A, B, C, D, E 和 M 是二维点
{x,y}
- 红色 AB 是向量形式的力。
- 点M是质心
- 蓝色BD是移动物体的力
- 绿色BE是旋转的力量
通过获取归一化向量 BM 和 AB 的叉积的反正弦来找到角度 Ɵ
旋转力是 AB * sin(Ɵ) 的长度,正确的方向(符号)将来自算法(BM x 的交叉AB) 并且跨国力是 AB * cos(Ɵ) 的长度并且沿着线 BM
伪代码
// 2D Points from diagram
A = {x,y};
B = {x,y};
M = {x,y};
// get length of vectors AB BM (^ is to the power of)
ABlen = ((B.x - A.x) ^ 2 + (B.y - A.y) ^ 2) ^ 0.5;
BMlen = ((B.x - M.x) ^ 2 + (B.y - M.y) ^ 2) ^ 0.5;
// Create normalized vectors AB and BM
ABnorm = {x : (B.x - A.x) / ABlen, y : (B.y - A.y) / ABLen};
BMnorm = {x : (M.x - B.x) / BMlen, y : (M.y - B.y) / BMLen};
// Get the angle Ɵ
Ɵ = asin(BMnorm.x * ABnorm.y - BMnorm.y * ABnorm.x);
// Rotational Force BE
rotateForce = ABlen * sin(Ɵ);
// Translational Force BD
translateForce = ABlen * cos(Ɵ);
// Translational force as a vector
translateForceVec = {x : ABnorm.x * translateForce, y : ABnorm.y * translateForce};
牛顿第二定律
力f
通过牛顿第二定律F = ma
得到加速度a = F / m
旋转力变成旋转加速度,但取决于物体的质量分布。