# 最終結論GeomBoxの引数の順所が違ったためボールをすりぬけていた。
# #self.geom = ode.GeomBox(
# # space=field.space, lengths=(w, h, l))
# self.geom = ode.GeomBox(
# space=field.space, lengths=(l, h, w))
#
# 以下のコードは必要ない
# #self.vbox.rotate(angle=pi/2.0, axis=(0,1,0))
# #y軸方向右ねじに回転
E:\myprg_main\python_my_prg\ode_prg\zahyou.py
# coding: UTF-8
#vpythonとpyodeの座標は完全に一致するみたい
#geomだけ座標かパラメータの順番がちがうのかもしれない
#またvpythonとpyodeの座標がわからなくなってきたので......
# vpythonのboxの座標の図 ↓
# E:\howm\gazou\vpython_box.jpg
import ode
from visual import *
import ode
scene = display(
title='field', width=640, height=520, autoscale=0,
x=0, y=380,
forward=norm((0.5,-0.5,-1)),
range=(15,15,15))
# range 座標軸それぞれに沿った中心:center から対象領域への広がりを意味
#autoscale = 0 のとき自動的にスケールを設定しません
# http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/visualj/display.html
#scene.mouse.camera
## vpython
#ボックスを描く
vbox = box(pos=(0, 2, 0),length=4,height=1,width=2)
# c言語のodeの座標の図 ↓ に合わせて
# E:\howm\gazou\ode_c_zahyou.jpg
# 原点:黄色 xプラス方向:赤 yプラス方向:青 zプラス方向:緑
# の色のボールをおく
hirosa = 20
ball_o = sphere(pos=(0, 0, 0), radius=0.5, color=color.yellow)
ball_x = sphere(pos=(hirosa/2, 0, 0), radius=0.5, color=color.red)
ball_y = sphere(pos=(0, hirosa/2, 0), radius=0.5, color=color.blue)
ball_z = sphere(pos=(0, 0, hirosa/2), radius=0.5, color=color.green)
#「床」をわかりやすくするため x軸方向:赤の線 z軸方向:緑の線を引っ張る
for x in range(-hirosa/2, hirosa/2+1):
trail = curve(pos=[(x, 0, -hirosa/2), (x, 0, hirosa/2)], color=visual.color.green)
for z in range(-hirosa/2, hirosa/2+1):
trail = curve(pos=[(-hirosa/2, 0, z), (hirosa/2, 0, z)], color=visual.color.red)
# pyode
world = ode.World()
space = ode.Space()
bodyx = ode.Body(world)
bodyx.setPosition((hirosa/3, 0, 0))
geomx = ode.GeomSphere( space=space, radius=0.2)
geomx.setBody(bodyx)
posx = bodyx.getPosition()
geom_ballx = sphere( pos=posx, radius=0.2, color=color.red)
bodyy = ode.Body(world)
bodyy.setPosition((0, hirosa/3, 0))
geomy = ode.GeomSphere( space=space, radius=0.2)
geomy.setBody(bodyy)
posy = bodyy.getPosition()
geom_bally = sphere( pos=posy, radius=0.2, color=color.blue)
bodyz = ode.Body(world)
bodyz.setPosition((0, 0, hirosa/3))
geomz = ode.GeomSphere( space=space, radius=0.2)
geomz.setBody(bodyz)
posz = bodyz.getPosition()
geom_ballz = sphere( pos=posz, radius=0.2, color=color.green)
0 件のコメント:
コメントを投稿