Advertisement
Guest User

Untitled

a guest
Nov 18th, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
E 0.77 KB | None | 0 0
  1. @name Contraption Inertia Finder [Tolyzor]
  2. @model models/props_c17/oildrum001.mdl
  3. @inputs Parent:entity
  4. @outputs Inertia:vector Mass
  5.  
  6. Contraption = Parent:getConstraints()
  7. Contraption:pushEntity(Parent)
  8.  
  9. CoG = vec()
  10. MoI = matrix()
  11. Mass = 0
  12.  
  13. foreach (K, E:entity = Contraption) {
  14.      CoG += E:massCenter() * E:mass()
  15.      Mass += E:mass()
  16. }
  17. CoG /= Mass
  18.  
  19. foreach (K, E:entity = Contraption) {
  20.      Offset = CoG - E:massCenter()
  21.      EMoI = matrix():setDiagonal(E:inertia() * 1550.1)
  22.      EMoI = matrix(E) * EMoI * transpose(matrix(E))
  23.      EMoI += E:mass() * (Offset:dot(Offset) * identity() - Offset:outerProduct(Offset))
  24.      MoI += EMoI
  25. }
  26.  
  27. CoG = Parent:toLocal(CoG)
  28. MoI = transpose(matrix(Parent)) * MoI * matrix(Parent)
  29. Inertia = diagonal(MoI)/1550.1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement