本文整理汇总了C++中osg::Trackball::updatePositionNeg方法的典型用法代码示例。如果您正苦于以下问题:C++ Trackball::updatePositionNeg方法的具体用法?C++ Trackball::updatePositionNeg怎么用?C++ Trackball::updatePositionNeg使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Trackball
的用法示例。
在下文中一共展示了Trackball::updatePositionNeg方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: motion
void motion(int x, int y)
{
OSG::Real32 w = win->getWidth(), h = win->getHeight();
OSG::Real32 a = -2. * ( lastx / w - .5 ),
b = -2. * ( .5 - lasty / h ),
c = -2. * ( x / w - .5 ),
d = -2. * ( .5 - y / h );
if ( mouseb & ( 1 << GLUT_LEFT_BUTTON ) )
{
tball.updateRotation( a, b, c, d );
}
else if ( mouseb & ( 1 << GLUT_MIDDLE_BUTTON ) )
{
tball.updatePosition( a, b, c, d );
}
else if ( mouseb & ( 1 << GLUT_RIGHT_BUTTON ) )
{
tball.updatePositionNeg( a, b, c, d );
}
lastx = x;
lasty = y;
}
示例2: mouseMoveEvent
void MyOSGQGLWidget::mouseMoveEvent(QMouseEvent *me)
{
OSG::Real32 w = osgWin->getWidth(); // force the calc to Real32
OSG::Real32 h = osgWin->getHeight();
OSG::Real32 a = -2. * (lastx / w - .5 );
OSG::Real32 b = -2. * (.5 - lasty / h );
OSG::Real32 c = -2. * (me->pos().x() / w - .5);
OSG::Real32 d = -2. * (.5 - me->pos().y() / h);
if(mouseb & Qt::LeftButton)
{
tball.updateRotation(a, b, c, d);
}
else if(mouseb & Qt::MidButton)
{
tball.updatePosition(a, b, c, d);
}
else if(mouseb & Qt::RightButton)
{
tball.updatePositionNeg(a, b, c, d);
}
lastx = me->pos().x();
lasty = me->pos().y();
updateGL();
}
示例3: motion
void motion(int x, int y)
{
float w = win->getWidth(),
h = win->getHeight();
float a = -2 * ( lastx / w - 0.5 ),
b = -2 * ( 0.5 - lasty / h ),
c = -2 * ( x / w - 0.5 ),
d = -2 * ( 0.5 - y / h );
if ( mouseb & ( 1 << GLUT_LEFT_BUTTON ) )
{
trackball.updateRotation( a, b, c, d );
}
else if ( mouseb & ( 1 << GLUT_MIDDLE_BUTTON ) )
{
trackball.updatePosition( a, b, c, d );
}
else if ( mouseb & ( 1 << GLUT_RIGHT_BUTTON ) )
{
trackball.updatePositionNeg( a, b, c, d );
}
lastx = x;
lasty = y;
}
示例4: handleMouseEvent
static OSStatus handleMouseEvent(EventHandlerCallRef nextHandler, EventRef event, void *userData)
{
OSStatus err;
OSG::Real32 w,h,a,b,c,d;
// Get the pressed mouse button
EventMouseButton mouseButton;
err = GetEventParameter(event, kEventParamMouseButton, typeMouseButton, 0, sizeof(mouseButton), 0, &mouseButton);
if (err != noErr)
return err;
// Get the modifier keys
::UInt32 modifierKeys;
err = GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, 0, sizeof(modifierKeys), 0, &modifierKeys);
if (err != noErr)
return err;
// Traditionally, Apple mice just have one button. It is common practice to simulate
// the middle and the right button by pressing the option or the control key.
if (mouseButton == kEventMouseButtonPrimary)
{
if (modifierKeys & optionKey)
mouseButton = kEventMouseButtonTertiary;
if (modifierKeys & controlKey)
mouseButton = kEventMouseButtonSecondary;
}
// Get the location of the mouse pointer
::Point location;
err = GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, 0, sizeof(location), 0, &location);
if (err != noErr)
return err;
// Handle the different kinds of events
::UInt32 eventKind = GetEventKind(event);
switch (eventKind)
{
// mouse button pressed
case kEventMouseDown:
lastx = location.h;
lasty = location.v;
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
break;
case kEventMouseButtonSecondary: // right button
tball.setAutoPositionNeg(true);
break;
case kEventMouseButtonTertiary: // middle button
tball.setAutoPosition(true);
break;
}
break;
// mouse button released
case kEventMouseUp:
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
break;
case kEventMouseButtonSecondary: // right button
tball.setAutoPositionNeg(false);
break;
case kEventMouseButtonTertiary: // middle button
tball.setAutoPosition(false);
break;
}
break;
// mouse moved while a button is pressed
case kEventMouseDragged:
w = win->getWidth();
h = win->getHeight();
a = -2. * ( lastx / w - .5 );
b = -2. * ( .5 - lasty / h );
c = -2. * ( location.h / w - .5 );
d = -2. * ( .5 - location.v / h );
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
tball.updateRotation( a, b, c, d );
break;
case kEventMouseButtonSecondary: // right button
tball.updatePositionNeg( a, b, c, d );
break;
case kEventMouseButtonTertiary: // middle button
tball.updatePosition( a, b, c, d );
break;
}
lastx = location.h;
lasty = location.v;
// Redraw the whole window
redraw();
break;
}
// We have to return eventNotHandledErr, otherwise the system is
// not able to operate the menu and the window border
//.........这里部分代码省略.........