|
From: ale a. <ale...@gm...> - 2009-11-24 20:23:42
|
Hi
I need help to determine the position of an object that is part of a frame
and I don't really understand how to use
*
world_pos = f.frame_to_world (frame_pos) *
found in online documentation and I'm looking for some examples
I use a class to define the frame that is composed by a main frame that
contains two frames composed by many objects.
The object ( a servo) is composed by two parts (servo_box and servo_frame),
I can turn the servo_frame arround its axis , but I need to connect two
servo to create a joint like hip, knee ....
Could you show me some examples or documentation that I can study to better
understand how to calculate the points I need?
AleAle99
code like this:
class ServoWithFrame():
def __init__ (self,offset=(0,0,0)):
self.servo =frame(pos=offset)
self.servo_box =frame(frame=self.servo)
self.servo_asse =frame(frame=self.servo)
self.main_box =box(frame=self.servo_box,
pos=(offset),axis=(self.servo_box.lenght,0,0), height =
self.servo_box.height, width
=self.servo_box.width,color=(0.4,0.4,0.4),material=materials.plastic)
self.secondary_box= box(frame=self.servo_box, pos=((self.main_box.x
-(self.servo_box.lenght -self.servo_box.lenghtb)/2. ),(self.main_box.y+
self.servo_box.heightb/2.+self.servo_box.height/2.),self.main_box.z
),axis=(self.servo_box.lenghtb,0,0), height = self.servo_box.heightb, width
=self.servo_box.width,color=(0.4,0.4,0.4),material=materials.plastic)
self.motor_cyl= cylinder (frame=self.servo_box,
pos=((self.main_box.x + self.servo_box.lenghtb/2. - self.servo_box.motor
),(self.main_box.y -self.servo_box.height -self.servo_box.heightb/2.+1.5
),self.main_box.z ), axis=(0,self.servo_box.motor,0), radius
=self.servo_box.width/2.,color=(0.4,0.4,0.4),material=materials.plastic)
self.motor_main= cylinder (frame=self.servo_asse,
pos=((self.main_box.x - self.servo_box.lenght/2. + self.servo_box.width/2.
),(self.main_box.y -self.servo_box.height/2 -
self.servo_box.attacw),self.main_box.z ), axis=(0,self.servo_box.attacl,0),
radius =self.servo_box.attacw/2.,
color=(0.9,0.9,0.95),material=materials.plastic)
self.motor_cylb= cylinder (frame=self.servo_box,
pos=(self.motor_main.x ,self.motor_main.y+ self.servo_box.height+
self.servo_box.heightb+4.5,self.motor_main.z ), axis=(0,2,0), radius
=self.servo_box.motor/2.,color=(0.4,0.4,0.4),material=materials.plastic)
self.servo_frame =frame(frame=self.servo)
self.left_circle = cylinder (frame=self.servo_frame, pos =
self.motor_cylb.pos,radius =self.servo_frame.width/2.,
lenght=self.servo_frame.thick,material=materials.rough)
self.left_box =box(frame=self.servo_frame,
pos=(self.left_circle.x+0.5,self.left_circle.y -(self.servo_frame.width/2.
-1) , self.left_circle.z), height =
self.servo_frame.height-self.servo_frame.width/2., width
=self.servo_frame.width,
lenght=self.servo_frame.thick,material=materials.rough)
self.right_circle = cylinder (frame=self.servo_frame,
pos=(self.left_circle.x + self.servo_frame.lenght -
self.servo_frame.thick,self.left_circle.y,self.left_circle.z), radius
=self.servo_frame.width/2.,
lenght=self.servo_frame.thick,material=materials.rough)
self.right_box =box(frame=self.servo_frame,
pos=(self.right_circle.x+0.5,self.right_circle.y-(self.servo_frame.width/2.
-1) , self.right_circle.z), height =
self.servo_frame.height-self.servo_frame.width/2., width
=self.servo_frame.width,
lenght=self.servo_frame.thick,material=materials.rough)
self.low_box = box(frame=self.servo_frame,
pos=(self.left_circle.x+self.servo_frame.lenght/2.,self.left_circle.y-self.servo_frame.width/2.
- (self.servo_frame.height-self.servo_frame.width) - self.servo_frame.thick
,self.left_circle.z),axis=(self.servo_frame.lenght,0,0), height = 1, width
=self.servo_frame.width,material=materials.rough)
self.side_dx = box(frame=self.servo_frame, pos=(self.low_box.x
-self.servo_frame.thick/2.
,self.low_box.y+1,self.low_box.z+self.servo_frame.width/2),axis=(self.servo_frame.lenght-4*self.servo_frame.thick,0,0),
height = 3, width =self.servo_frame.thick,material=materials.rough)
self.side_sx = box(frame=self.servo_frame, pos=(self.low_box.x
-self.servo_frame.thick/2.
,self.low_box.y+1,self.low_box.z-self.servo_frame.width/2),axis=(self.servo_frame.lenght-4*self.servo_frame.thick,0,0),
height = 3, width =self.servo_frame.thick,material=materials.rough)
|