QPointF pointF;
auto calcAngle = (std::numbers::pi_v<qreal> * angle) / 180.0;
pointF.setX((radius + (radius * qCos(calcAngle)) - offset * qSin(calcAngle)));
pointF.setY((radius + (radius * qSin(calcAngle)) + offset * qCos(calcAngle)));
return pointF;
angleValueTransformer.setAngleRangeDegrees(CTcm_ValueRange<double>(-60, 240));
angleValueTransformer.setValueRange(CTcm_ValueRange<double>(m_ValueRange.m_Min, m_ValueRange.m_Max));
angleValueTransformer.setCurrentValue(m_NeedleValue);
auto alpha = ((std::numbers::pi_v<qreal> / 2) - ((m_NeedleValue * (std::numbers::pi_v<qreal>) * ( 5.0 / 6.0)) / m_ValueRange.m_Max ));
auto alpha = ((std::numbers::pi_v<qreal> / 2) - ((m_NeedleValue * 5) / 1200.0 ));
qDebug() << "Value: " << m_NeedleValue << "alpha" << alpha;
QPointF pointF;
auto calcAngle = (std::numbers::pi_v<qreal> * angle) / 180.0;
pointF.setX((m_MainCircleRadius + (radius * qCos(calcAngle)) * qSin(calcAngle)));
pointF.setY((m_MainCircleRadius + (radius * qSin(calcAngle)) * qCos(calcAngle)));
return pointF;
// starting point, arrow top
auto firstPoint = calculatePoint((centralCircleDiameter / 2.0 + m_indentFromCircleForNeedle) + m_NeedleHeight.value(), m_AngleNeedle, 0);
points.append(firstPoint);
auto secondPoint = calculatePoint(centralCircleDiameter / 2.0 - 5, m_AngleNeedle, -m_NeedleWidth.value() / 2.0);
points.append(secondPoint);
auto thirdPoint = calculatePoint(centralCircleDiameter / 2.0 + m_indentFromCircleForNeedle, m_AngleNeedle, -(m_NeedleWidth.value() / 2.0));
points.append(thirdPoint);
auto firthPoint = calculatePoint(centralCircleDiameter / 2.0 + m_indentFromCircleForNeedle, m_AngleNeedle, m_NeedleWidth.value() / 2.0);
points.append(firthPoint);
auto fifthPoint = calculatePoint(centralCircleDiameter / 2.0 - 5, m_AngleNeedle, m_NeedleWidth.value() / 2.0);
points.append(fifthPoint);
// last point, arrow top.
auto sixthPoint = calculatePoint((centralCircleDiameter / 2.0 + m_indentFromCircleForNeedle) + m_NeedleHeight.value(), m_AngleNeedle, 0);
points.append(sixthPoint);
//первая точка
calculatePoint(mainCircleDiameter / 2, m_AngleNeedle); // вызов функции та что ниже
QPointF Needle::calculatePoint(const double& radius, const double& angle)
{
QPointF pointF;
pointF.setX(m_MainCircleDiameter.value() / 2 + radius * qCos((M_PI * angle) / 180.0));
pointF.setY(m_MainCircleDiameter.value() / 2 + radius * qSin((M_PI * angle) / 180.0));
return pointF;
}
angleValueTransformer.setCurrentValue(data.m_CurrentValue);
// находим угол для центра стрелки
m_AngleNeedle = angleValueTransformer.calculateCurrentAngle();
auto firstPoint = calculatePoint(mainCircleDiameter / 2, m_AngleNeedle);
QPointF pointF;
pointF.setX(m_MainCircleDiameter.value() / 2 + mainCircleDiameter / 2 * qCos((M_PI * m_AngleNeedle(тут нужно значение ширины стрелки на 2)) / 180.0));
pointF.setY(m_MainCircleDiameter.value() / 2 + mainCircleDiameter / 2 * qSin((M_PI * m_AngleNeedle(тут нужно значение ширины стрелки на 2)) / 180.0));
Вот как на картинке 4 должно быть ромба, но я пока пытаюсь один нарисовать, но с точками что то не так я считаю.
Есл ия правильно понимаю то дял расчетов мне нужен только радиус внешнего кольца и угол в какой значении помещается первая точка, я прав?