Тема: jode 2 edition
Показать сообщение отдельно
Старый 08.10.2005, 16:52   #2
jimon
 
Сообщений: n/a
вот еще мой пост из серии изучаем ode )

изучаем сочленение типа hinge (Сгибание)



теперь обясняю что такое точка сойденения (anchor) и что такой ось поворота (axis)

anchor ето точка сойденения обектов body 1 и body2
координаты точки задаются командой ODE_dJointSetHingeAnchor(joint,x#,y#,z#)
координаты задаются глобальные ! ето важно

тоесть мы получаем сообствено триугольник

----c
----/\
---/--\
--/----\
a/____\b

где a и b ето body 1 и body 2 соотвествено
и c ето anchor

длина отрезка ac и длина отрезка bc всегда const
может изменятся в очень маленьком диапазоне
если растояние сильно изменится - система или 'взорвется' или ode выдаст ошибку

растояние между ab может менятся от 0 до ac+bc



ось поворота тожет очень важный аргумент
она задается командой ODE_dJointSetHingeAxis (joint, x#, y#, z#)
значение x,y,z ето координаты вектора , начало вектора - точка anchor

ось что показана на рисунке можно задать вот так ODE_dJointSetHingeAxis (joint, 0, 1, 0)



теперь реализуем ето все в ode )

test_space=ODE_dSimpleSpaceCreate(space)

space2%=space%
space%=0


g.TODEGeom = New TODEGeom
g\mesh=CreateCube()
MoveEntity g\mesh,0,5,-20
EntityColor g\mesh,0,255,0
g\body = ODE_dBodyCreate()
g\geom = ODE_create_object("cube",g\body,g\mesh,1,1,1,1)
tode1=Handle(g)
body1=g\body

ODE_dSpaceAdd(test_space,g\geom)


g.TODEGeom = New TODEGeom
g\mesh=CreateCube()
MoveEntity g\mesh,0,15,-20
EntityColor g\mesh,0,255,0
g\body = ODE_dBodyCreate()
g\geom = ODE_create_object("cube",g\body,g\mesh,1,1,1,1)
tode2=Handle(g)
body2=g\body

ODE_dSpaceAdd(test_space,g\geom)

joint2 = ODE_dJointCreateHinge()
ODE_dJointAttach joint2, body2, body1
ODE_dJointSetHingeAnchor(joint2, 0,10, -20)
ODE_dJointSetHingeAxis joint2, 1, 0, 0

space%=space2%
вот код обекта который я создал



сообствено обект ето два кубика ... один снизу и другой сверху
между ними (ровно посредине) находится точка сойденения (альфа - я так ее назвал)

 
Ответить с цитированием