本文整理汇总了C++中QTimeLine::duration方法的典型用法代码示例。如果您正苦于以下问题:C++ QTimeLine::duration方法的具体用法?C++ QTimeLine::duration怎么用?C++ QTimeLine::duration使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTimeLine
的用法示例。
在下文中一共展示了QTimeLine::duration方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: suggestedRange
qreal suggestedRange(qreal t) const
{
Q_ASSERT( m_mode == Linear || m_mode == Jump);
Q_ASSERT( 0 <= t && t <= 1.0 );
if (m_mode == Linear) {
qreal in = m_source.range();
qreal out = m_target.range();
return in + t * (out-in);
}
else if (m_mode == Jump) {
qreal jumpDuration = m_timeline.duration();
// Purely cinematic approach to calculate the jump path
qreal g = qMin(m_source.range(), m_target.range()); // Min altitude
qreal k = qMax(m_source.range(), m_target.range()); // Base altitude
qreal d = t > 0.5 ? m_source.range() - g : m_target.range() - g; // Base difference
qreal c = d * 2 * qAbs(t - 0.5); // Correction factor
qreal h = qMin(1000*3000.0, totalDistance() / 2.0); // Jump height
// Parameters for the parabolic function that has the maximum at
// the point H ( 0.5 * m_jumpDuration, g + h )
qreal a = - h / ( (qreal)( 0.25 * jumpDuration * jumpDuration ) );
qreal b = 2.0 * h / (qreal)( 0.5 * jumpDuration );
qreal x = jumpDuration * t;
qreal y = ( a * x + b ) * x + k - c; // Parabolic function
return y;
}
else {
qWarning("Unhandled FlyTo mode, no camera distance interpolation.");
return m_target.range();
}
}