def create_cylinder(self,key,density,length,radius,pos,base=0,rot=0,R=0.): """Creates a cylinder body and corresponding geom. Arguments: key : number id to assign to the cylinder density : density of the given body length : length of the cylinder radius : radius of the cylinder pos : position of the center of the cylinder (x,y,z list) base : place new object at negative end of base object """ # Auto label the joint key or not. key = len(self.bodies) if key == -1 else key # create cylinder body (aligned along the z-axis so that it matches the # GeomCylinder created below, which is aligned along the z-axis by # default) body = ode.Body(self.world) M = ode.Mass() M.setCylinder(density, 3, radius, length) body.setMass(M) # create a cylinder geom for collision detection geom = ode.GeomCylinder(self.space, radius, length) geom.setBody(body) # set the position of the cylinder body.setPosition((pos[0],pos[1],pos[2])) # set parameters for drawing the body body.shape = "cylinder" body.length = length body.radius = radius # set the rotation of the cylinder if(rot): body.setRotation(self.form_rotation(rot)) # set the rotation of the cylinder directly if R: body.setRotation(R) self.bodies[key] = body self.geoms[key] = geom if(base): Placement.place_object(self.bodies[base],body) if(self.fluid_dynamics): self.create_surfaces(key,1.) return key
def create_capsule(self,key,density,length,radius,pos,base=0,rot=0): """Creates a capsule body and corresponding geom. Arguments: key : number id to assign to the capsule density : density of the given body length : length of the capsule radius : radius of the capsule pos : position of the center of the capsule (x,y,z list) base : place new object at negative end of base object """ # create capsule body (aligned along the z-axis so that it matches the # GeomCCylinder created below, which is aligned along the z-axis by # default) body = ode.Body(self.world) M = ode.Mass() M.setCapsule(density, 3, radius, length) body.setMass(M) # create a capsule geom for collision detection geom = ode.GeomCCylinder(self.space, radius, length) geom.setBody(body) # set the position of the capsule body.setPosition((pos[0],pos[1],pos[2])) # set parameters for drawing the body body.shape = "capsule" body.length = length body.radius = radius # set the rotation of the capsule if(rot): body.setRotation(self.form_rotation(rot)) self.bodies[key] = body self.geoms[key] = geom if(base): Placement.place_object(self.bodies[base],body)
def create_capsule(self, key, density, length, radius, pos, base=0, rot=0): """Creates a capsule body and corresponding geom. Arguments: key : number id to assign to the capsule density : density of the given body length : length of the capsule radius : radius of the capsule pos : position of the center of the capsule (x,y,z list) base : place new object at negative end of base object """ # create capsule body (aligned along the z-axis so that it matches the # GeomCCylinder created below, which is aligned along the z-axis by # default) body = ode.Body(self.world) M = ode.Mass() M.setCapsule(density, 3, radius, length) body.setMass(M) # create a capsule geom for collision detection geom = ode.GeomCCylinder(self.space, radius, length) geom.setBody(body) # set the position of the capsule body.setPosition((pos[0], pos[1], pos[2])) # set parameters for drawing the body body.shape = "capsule" body.length = length body.radius = radius # set the rotation of the capsule if (rot): body.setRotation(self.form_rotation(rot)) self.bodies[key] = body self.geoms[key] = geom if (base): Placement.place_object(self.bodies[base], body)