62QPointF QQuickTargetDirection::sample(
const QPointF &from)
69 QQuickParticleEmitter* parentEmitter = qobject_cast<QQuickParticleEmitter*>(parent());
70 targetX = m_targetItem->width()/2;
71 targetY = m_targetItem->height()/2;
73 qWarning() <<
"Directed vector is not a child of the emitter. Mapping of target item coordinates may fail.";
74 targetX += m_targetItem->x();
75 targetY += m_targetItem->y();
77 ret = parentEmitter->mapFromItem(m_targetItem, QPointF(targetX, targetY));
85 targetX += 0 - from.x() - m_targetVariation + QRandomGenerator::global()->generateDouble() * m_targetVariation*2;
86 targetY += 0 - from.y() - m_targetVariation + QRandomGenerator::global()->generateDouble() * m_targetVariation*2;
87 qreal theta = std::atan2(targetY, targetX);
88 qreal mag = m_magnitude + QRandomGenerator::global()->generateDouble() * m_magnitudeVariation * 2 - m_magnitudeVariation;
89 if (m_proportionalMagnitude)
90 mag *= qHypot(targetX, targetY);
91 ret.setX(mag * std::cos(theta));
92 ret.setY(mag * std::sin(theta));