/
mass.go
81 lines (62 loc) · 2.48 KB
/
mass.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package ode
/*
#define dDOUBLE
#include "ode/mass.h"
*/
import "C"
type Mass C.dMass
func (m *Mass) Check() bool {
if C.dMassCheck((*C.dMass)(m)) == 0 {
return false
} else {
return true
}
}
func (m *Mass) SetZero() {
C.dMassSetZero((*C.dMass)(m))
}
func (m *Mass) SetParameters(themass, cgx, cgy, cgz, I11, I22, I33, I12, I13, I23 Real) {
C.dMassSetParameters((*C.dMass)(m), C.dReal(themass), C.dReal(cgx), C.dReal(cgy), C.dReal(cgz), C.dReal(I11), C.dReal(I22), C.dReal(I33), C.dReal(I12), C.dReal(I13), C.dReal(I23))
}
func (m *Mass) SetSphere(density, radius Real) {
C.dMassSetSphere((*C.dMass)(m), C.dReal(density), C.dReal(radius))
}
func (m *Mass) SetSphereTotal(total_mass, radius Real) {
C.dMassSetSphereTotal((*C.dMass)(m), C.dReal(total_mass), C.dReal(radius))
}
func (m *Mass) SetCapsule(density Real, direction int, radius, length Real) {
C.dMassSetCapsule((*C.dMass)(m), C.dReal(density), C.int(direction), C.dReal(radius), C.dReal(length))
}
func (m *Mass) SetCapsuleTotal(total_mass Real, direction int, radius, length Real) {
C.dMassSetCapsuleTotal((*C.dMass)(m), C.dReal(total_mass), C.int(direction), C.dReal(radius), C.dReal(length))
}
func (m *Mass) SetCylinder(density Real, direction int, radius, length Real) {
C.dMassSetCylinder((*C.dMass)(m), C.dReal(density), C.int(direction), C.dReal(radius), C.dReal(length))
}
func (m *Mass) SetCylinderTotal(total_mass Real, direction int, radius, length Real) {
C.dMassSetCylinderTotal((*C.dMass)(m), C.dReal(total_mass), C.int(direction), C.dReal(radius), C.dReal(length))
}
func (m *Mass) SetBox(density, lx, ly, lz Real) {
C.dMassSetBox((*C.dMass)(m), C.dReal(density), C.dReal(lx), C.dReal(ly), C.dReal(lz))
}
func (m *Mass) SetBoxTotal(total_mass, lx, ly, lz Real) {
C.dMassSetBoxTotal((*C.dMass)(m), C.dReal(total_mass), C.dReal(lx), C.dReal(ly), C.dReal(lz))
}
func (m *Mass) SetTrimesh(density Real, g *Geom) {
C.dMassSetTrimesh((*C.dMass)(m), C.dReal(density), (C.dGeomID)((*C.struct_dxGeom)(g)))
}
func (m *Mass) SetTrimeshTotal(total_mass Real, g *Geom) {
C.dMassSetTrimeshTotal((*C.dMass)(m), C.dReal(total_mass), (C.dGeomID)((*C.struct_dxGeom)(g)))
}
func (m *Mass) Adjust(newmass Real) {
C.dMassAdjust((*C.dMass)(m), C.dReal(newmass))
}
func (m *Mass) Translate(v Vector3) {
C.dMassTranslate((*C.dMass)(m), C.dReal(v[0]), C.dReal(v[1]), C.dReal(v[2]))
}
func (m *Mass) Rotate(R *Matrix3) {
C.dMassRotate((*C.dMass)(m), (*C.dReal)(&R[0]))
}
func (m *Mass) Add(b *Mass) {
C.dMassAdd((*C.dMass)(m), (*C.dMass)(b))
}