openalea.phenomenal.calibration.transformations.Arcball

class openalea.phenomenal.calibration.transformations.Arcball(initial=None)[source]

Bases: object

Virtual Trackball Control.

>>> ball = Arcball()
>>> ball = Arcball(initial=numpy.identity(4))
>>> ball.place([320, 320], 320)
>>> ball.down([500, 250])
>>> ball.drag([475, 275])
>>> R = ball.matrix()
>>> numpy.allclose(numpy.sum(R), 3.90583455)
True
>>> ball = Arcball(initial=[1, 0, 0, 0])
>>> ball.place([320, 320], 320)
>>> ball.setaxes([1, 1, 0], [-1, 1, 0])
>>> ball.constrain = True
>>> ball.down([400, 200])
>>> ball.drag([200, 400])
>>> R = ball.matrix()
>>> numpy.allclose(numpy.sum(R), 0.2055924)
True
>>> ball.next()
__init__(initial=None)[source]

Initialize virtual trackball control.

initial : quaternion or rotation matrix

Methods

__init__([initial])

Initialize virtual trackball control.

down(point)

Set initial cursor window coordinates and pick constrain-axis.

drag(point)

Update current cursor window coordinates.

matrix()

Return homogeneous rotation matrix.

next([acceleration])

Continue rotation in direction of last drag.

place(center, radius)

Place Arcball, e.g. when window size changes.

setaxes(*axes)

Set axes to constrain rotations.

Attributes

constrain

Return state of constrain to axis mode.

property constrain

Return state of constrain to axis mode.

down(point)[source]

Set initial cursor window coordinates and pick constrain-axis.

drag(point)[source]

Update current cursor window coordinates.

matrix()[source]

Return homogeneous rotation matrix.

next(acceleration=0.0)[source]

Continue rotation in direction of last drag.

place(center, radius)[source]

Place Arcball, e.g. when window size changes.

centersequence[2]

Window coordinates of trackball center.

radiusfloat

Radius of trackball in window coordinates.

setaxes(*axes)[source]

Set axes to constrain rotations.