fix: Correctly position angle dimension text in all quadrants
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
@@ -690,6 +690,29 @@ void ViewportWidget::paintGL()
|
|||||||
else refDir = QVector3D(0, 1, 0);
|
else refDir = QVector3D(0, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector3D currentMouseWorldPosForText = unproject(m_currentMousePos, m_currentPlane);
|
||||||
|
QVector3D mouseVecForText = currentMouseWorldPosForText - startPos;
|
||||||
|
|
||||||
|
if (mouseVecForText.length() > 1e-6) {
|
||||||
|
double mouseAngle;
|
||||||
|
if (m_currentPlane == SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.x()));
|
||||||
|
else if (m_currentPlane == SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.y(), mouseVecForText.x()));
|
||||||
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.y()));
|
||||||
|
|
||||||
|
double refAngleForQuadrant;
|
||||||
|
if (m_currentPlane == SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
|
else if (m_currentPlane == SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
|
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
|
|
||||||
|
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
||||||
|
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
||||||
|
while (relativeMouseAngle > 180.0) relativeMouseAngle -= 360.0;
|
||||||
|
|
||||||
|
if (relativeMouseAngle >= 90 || relativeMouseAngle < -90) {
|
||||||
|
refDir = -refDir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
double refAngle, lineAngle;
|
double refAngle, lineAngle;
|
||||||
if (m_currentPlane == SketchPlane::XY) {
|
if (m_currentPlane == SketchPlane::XY) {
|
||||||
refAngle = atan2(refDir.z(), refDir.x());
|
refAngle = atan2(refDir.z(), refDir.x());
|
||||||
|
|||||||
Reference in New Issue
Block a user