Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name Contraption Inertia Finder [Tolyzor]
- @model models/props_c17/oildrum001.mdl
- @inputs Parent:entity
- @outputs Inertia:vector Mass
- Contraption = Parent:getConstraints()
- Contraption:pushEntity(Parent)
- CoG = vec()
- MoI = matrix()
- Mass = 0
- foreach (K, E:entity = Contraption) {
- CoG += E:massCenter() * E:mass()
- Mass += E:mass()
- }
- CoG /= Mass
- foreach (K, E:entity = Contraption) {
- Offset = CoG - E:massCenter()
- EMoI = matrix():setDiagonal(E:inertia() * 1550.1)
- EMoI = matrix(E) * EMoI * transpose(matrix(E))
- EMoI += E:mass() * (Offset:dot(Offset) * identity() - Offset:outerProduct(Offset))
- MoI += EMoI
- }
- CoG = Parent:toLocal(CoG)
- MoI = transpose(matrix(Parent)) * MoI * matrix(Parent)
- Inertia = diagonal(MoI)/1550.1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement