PDA

View Full Version : getting position relative to an object


fivel_lab
10-24-2011, 10:12 AM
i'm running an experiment using vizard, and the experiment consists of having a balance board apparatus with a block placed at the boards center. the board starts to tilt at the start of a trial, and as it does so the block starts to slide accordingly. participants are tasked with keeping the board stable and the block within a target region that is located 1/4 of the board's length on the left side.

the board's color is black, as is the block's. the target region is denoted by a white block that has been added as a child to the board.

what i would like to do is have the block's color change to white whenever it is within the target region. problem is, i don't know how to obtain the block's position relative to the board, rather than the world without setting the block as a child of the board. any suggestions?

Jeff
10-24-2011, 06:28 PM
Why don't you want the block to be a child of the board?

If you are using world coordinates you could get the distance between the block position and the target position using the vizmat.Distance command. If it's within a certain then change it's color.

fivel_lab
10-26-2011, 01:45 PM
works, thanks =-)

as for why i didn't want the block to be a child of the board, whenever i had it set up that way, the ball wouldn't slide the way i wanted it to. again, not sure why...

fivel_lab
10-26-2011, 02:08 PM
ok, new issue...

the block slides off more often than i expected during my trial runs, so i'm thinking of including "bookends" on the ends of each side of the board.


global bar
bar = viz.add('box.wrl')
bar.setScale([BARLENGTH, CUBESIZE,CUBESIZE])
bar.setPosition(CENTERPOS)
bar.color(viz.BLACK)
barCollideShape = bar.collideBox()
barCollideShape.setDensity(DENSITY)
barCollideShape.setFriction(FRICTION)

end1=bar.add('box.wrl')
end1.setPosition((CENTERPOS[0]-.55, CENTERPOS[1]-4, CENTERPOS[2]-5))
end1.color(viz.WHITE)
end1.setScale([.05,3,1])
end1Collide = end1.collideBox()
end1.disable(viz.DYNAMICS)
end1Collide.setDensity(DENSITY)



when i use .disable(viz.DYNAMICS), the block slides right through the bookend, but without it, the bookend itself behaves crazily.

Jeff
11-02-2011, 07:24 PM
If you increase the scale value for the X dimension does it make a difference?
end1.setScale([.05,3,1])