diff --git a/src/CircleTool.cpp b/src/CircleTool.cpp index 4d2dc08..1b23cce 100644 --- a/src/CircleTool.cpp +++ b/src/CircleTool.cpp @@ -172,19 +172,19 @@ void CircleTool::paintGL() QVector3D p1, p2; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - p1.setX(centerPos.x() + radius * qCos(angle1)); - p1.setY(centerPos.y()); - p1.setZ(centerPos.z() + radius * qSin(angle1)); - p2.setX(centerPos.x() + radius * qCos(angle2)); - p2.setY(centerPos.y()); - p2.setZ(centerPos.z() + radius * qSin(angle2)); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { p1.setX(centerPos.x() + radius * qCos(angle1)); p1.setY(centerPos.y() + radius * qSin(angle1)); p1.setZ(centerPos.z()); p2.setX(centerPos.x() + radius * qCos(angle2)); p2.setY(centerPos.y() + radius * qSin(angle2)); p2.setZ(centerPos.z()); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + p1.setX(centerPos.x() + radius * qCos(angle1)); + p1.setY(centerPos.y()); + p1.setZ(centerPos.z() + radius * qSin(angle1)); + p2.setX(centerPos.x() + radius * qCos(angle2)); + p2.setY(centerPos.y()); + p2.setZ(centerPos.z() + radius * qSin(angle2)); } else { // YZ p1.setX(centerPos.x()); p1.setY(centerPos.y() + radius * qCos(angle1)); diff --git a/src/LineTool.cpp b/src/LineTool.cpp index 7cc23e7..e0b6126 100644 --- a/src/LineTool.cpp +++ b/src/LineTool.cpp @@ -63,12 +63,12 @@ void LineTool::mousePressEvent(QMouseEvent *event) QVector3D currentMouseWorldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane()); QVector3D mouseVec = currentMouseWorldPos - startPos; double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y())); double refAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngle; while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0; @@ -85,8 +85,8 @@ void LineTool::mousePressEvent(QMouseEvent *event) } double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle); QVector3D finalDir; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad)); double lineLength; if (lengthFromInput) lineLength = inputLength; @@ -115,8 +115,8 @@ void LineTool::mousePressEvent(QMouseEvent *event) } else { QVector3D worldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane()); if (m_viewport->isSnappingHorizontal()) { - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z()); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y()); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y()); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z()); else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z()); } else if (m_viewport->isSnappingVertical()) { if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X()); @@ -165,9 +165,9 @@ void LineTool::mouseMoveEvent(QMouseEvent *event) double angle = 0; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - angle = atan2(delta.z(), delta.x()); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { angle = atan2(delta.y(), delta.x()); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + angle = atan2(delta.z(), delta.x()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { angle = atan2(delta.z(), delta.y()); } @@ -219,12 +219,12 @@ void LineTool::finalizeCreation() QVector3D currentMouseWorldPos = m_viewport->unproject(m_viewport->currentMousePos(), m_viewport->currentPlane()); QVector3D mouseVec = currentMouseWorldPos - startPos; double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y())); double refAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngle; while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0; @@ -241,8 +241,8 @@ void LineTool::finalizeCreation() } double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle); QVector3D finalDir; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad)); double lineLength; if (lengthFromInput) lineLength = inputLength; @@ -321,13 +321,13 @@ void LineTool::paintGL() // Quadrant snapping double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y())); double refAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngle; @@ -347,8 +347,8 @@ void LineTool::paintGL() double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle); QVector3D finalDir; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad)); double lineLength; @@ -380,8 +380,8 @@ void LineTool::paintGL() } else if (m_viewport->isSnappingVertex()) { worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z()); } else if (m_viewport->isSnappingHorizontal()) { - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z()); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y()); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y()); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z()); else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z()); } else if (m_viewport->isSnappingVertical()) { if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X()); @@ -418,13 +418,13 @@ void LineTool::paintGL() QVector3D mouseVec = currentMouseWorldPos - startPos; double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y())); double refAngleForQuadrant; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngleForQuadrant; @@ -441,11 +441,11 @@ void LineTool::paintGL() } if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - refAngle = atan2(refDir.z(), refDir.x()); - lineAngle = atan2(lineVec.z(), lineVec.x()); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { refAngle = atan2(refDir.y(), refDir.x()); lineAngle = atan2(lineVec.y(), lineVec.x()); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + refAngle = atan2(refDir.z(), refDir.x()); + lineAngle = atan2(lineVec.z(), lineVec.x()); } else { // YZ refAngle = atan2(refDir.z(), refDir.y()); lineAngle = atan2(lineVec.z(), lineVec.y()); @@ -461,9 +461,9 @@ void LineTool::paintGL() QVector3D perpVec; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized(); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized(); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized(); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized(); } @@ -513,8 +513,8 @@ void LineTool::paintGL() for (int i = 0; i <= numSegments; ++i) { double angle = refAngle + (lineAngle - refAngle) * i / numSegments; QVector3D p; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) p = startPos + radius * QVector3D(cos(angle), 0, sin(angle)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) p = startPos + radius * QVector3D(cos(angle), sin(angle), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) p = startPos + radius * QVector3D(cos(angle), sin(angle), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) p = startPos + radius * QVector3D(cos(angle), 0, sin(angle)); else p = startPos + radius * QVector3D(0, cos(angle), sin(angle)); vertices << p.x() << p.y() << p.z(); } @@ -535,11 +535,11 @@ void LineTool::paintGL() double endAngle = lineAngle; QVector3D radialDir_end, tangentDir_end; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - radialDir_end = QVector3D(cos(endAngle), 0, sin(endAngle)); - tangentDir_end = QVector3D(-sin(endAngle), 0, cos(endAngle)); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { radialDir_end = QVector3D(cos(endAngle), sin(endAngle), 0); tangentDir_end = QVector3D(-sin(endAngle), cos(endAngle), 0); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + radialDir_end = QVector3D(cos(endAngle), 0, sin(endAngle)); + tangentDir_end = QVector3D(-sin(endAngle), 0, cos(endAngle)); } else { radialDir_end = QVector3D(0, cos(endAngle), sin(endAngle)); tangentDir_end = QVector3D(0, -sin(endAngle), cos(endAngle)); @@ -555,11 +555,11 @@ void LineTool::paintGL() double startAngle = refAngle; QVector3D radialDir_start, tangentDir_start; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - radialDir_start = QVector3D(cos(startAngle), 0, sin(startAngle)); - tangentDir_start = QVector3D(-sin(startAngle), 0, cos(startAngle)); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { radialDir_start = QVector3D(cos(startAngle), sin(startAngle), 0); tangentDir_start = QVector3D(-sin(startAngle), cos(startAngle), 0); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + radialDir_start = QVector3D(cos(startAngle), 0, sin(startAngle)); + tangentDir_start = QVector3D(-sin(startAngle), 0, cos(startAngle)); } else { radialDir_start = QVector3D(0, cos(startAngle), sin(startAngle)); tangentDir_start = QVector3D(0, -sin(startAngle), cos(startAngle)); @@ -584,22 +584,22 @@ void LineTool::paintGL() const float indicatorOffset = 0.02f * -m_viewport->camera()->zoom(); if (m_viewport->isSnappingHorizontal()) { if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - vertices << midPoint.x() - indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset; - vertices << midPoint.x() + indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset; - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { vertices << midPoint.x() - indicatorSize << midPoint.y() + indicatorOffset << midPoint.z(); vertices << midPoint.x() + indicatorSize << midPoint.y() + indicatorOffset << midPoint.z(); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + vertices << midPoint.x() - indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset; + vertices << midPoint.x() + indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset; } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { vertices << midPoint.x() << midPoint.y() - indicatorSize << midPoint.z() + indicatorOffset; vertices << midPoint.x() << midPoint.y() + indicatorSize << midPoint.z() + indicatorOffset; } } else { // m_isSnappingVertical if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() - indicatorSize; - vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() + indicatorSize; - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { vertices << midPoint.x() + indicatorOffset << midPoint.y() - indicatorSize << midPoint.z(); vertices << midPoint.x() + indicatorOffset << midPoint.y() + indicatorSize << midPoint.z(); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() - indicatorSize; + vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() + indicatorSize; } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() - indicatorSize; vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() + indicatorSize; @@ -655,13 +655,13 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa QVector3D mouseVec = currentMouseWorldPos - startPos; double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y())); double refAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngle; @@ -681,8 +681,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle); QVector3D finalDir; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad)); else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad)); if (lengthFromInput) { @@ -714,8 +714,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa } else if (m_viewport->isSnappingVertex()) { worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z()); } else if (m_viewport->isSnappingHorizontal()) { - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z()); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y()); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y()); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z()); else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z()); } else if (m_viewport->isSnappingVertical()) { if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X()); @@ -742,13 +742,13 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa if (angleFromInput) { if (mouseVecForText.length() > 1e-6) { double mouseAngle; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.y(), mouseVecForText.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.y(), mouseVecForText.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.x())); else mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.y())); double refAngleForQuadrant; - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x())); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x())); else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y())); double relativeMouseAngle = mouseAngle - refAngleForQuadrant; @@ -766,11 +766,11 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa } if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - refAngle = atan2(refDir.z(), refDir.x()); - lineAngle = atan2(lineVec.z(), lineVec.x()); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { refAngle = atan2(refDir.y(), refDir.x()); lineAngle = atan2(lineVec.y(), lineVec.x()); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + refAngle = atan2(refDir.z(), refDir.x()); + lineAngle = atan2(lineVec.z(), lineVec.x()); } else { // YZ refAngle = atan2(refDir.z(), refDir.y()); lineAngle = atan2(lineVec.z(), lineVec.y()); @@ -783,9 +783,9 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa QVector3D perpVec; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized(); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized(); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized(); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized(); } @@ -831,8 +831,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa QVector3D textPos3DAngle; float textOffset = 0.035f * -m_viewport->camera()->zoom(); - if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), 0, sin(midAngle)); - else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), sin(midAngle), 0); + if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), sin(midAngle), 0); + else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), 0, sin(midAngle)); else textPos3DAngle = startPos + (radius + textOffset) * QVector3D(0, cos(midAngle), sin(midAngle)); QVector3D screenPosAngle = m_viewport->project(textPos3DAngle, modelView, projection, m_viewport->rect()); diff --git a/src/RectangleTool.cpp b/src/RectangleTool.cpp index fb16418..e0f49fa 100644 --- a/src/RectangleTool.cpp +++ b/src/RectangleTool.cpp @@ -69,10 +69,10 @@ void RectangleTool::mousePressEvent(QMouseEvent *event) double current_w, current_h; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.z()); + current_h = qAbs(mouseDir.y()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.y()); + current_h = qAbs(mouseDir.z()); } else { // YZ current_w = qAbs(mouseDir.y()); current_h = qAbs(mouseDir.z()); @@ -85,10 +85,10 @@ void RectangleTool::mousePressEvent(QMouseEvent *event) worldPos = startPos; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setZ(startPos.z() + signZ * rect_h); + worldPos.setY(startPos.y() + signY * rect_h); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setY(startPos.y() + signY * rect_h); + worldPos.setZ(startPos.z() + signZ * rect_h); } else { // YZ worldPos.setY(startPos.y() + signY * rect_w); worldPos.setZ(startPos.z() + signZ * rect_h); @@ -140,10 +140,10 @@ void RectangleTool::finalizeCreation() double current_w, current_h; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.z()); + current_h = qAbs(mouseDir.y()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.y()); + current_h = qAbs(mouseDir.z()); } else { // YZ current_w = qAbs(mouseDir.y()); current_h = qAbs(mouseDir.z()); @@ -156,10 +156,10 @@ void RectangleTool::finalizeCreation() worldPos = startPos; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setZ(startPos.z() + signZ * rect_h); + worldPos.setY(startPos.y() + signY * rect_h); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setY(startPos.y() + signY * rect_h); + worldPos.setZ(startPos.z() + signZ * rect_h); } else { // YZ worldPos.setY(startPos.y() + signY * rect_w); worldPos.setZ(startPos.z() + signZ * rect_h); @@ -206,10 +206,10 @@ void RectangleTool::paintGL() double current_w, current_h; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.z()); + current_h = qAbs(mouseDir.y()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.y()); + current_h = qAbs(mouseDir.z()); } else { // YZ current_w = qAbs(mouseDir.y()); current_h = qAbs(mouseDir.z()); @@ -222,10 +222,10 @@ void RectangleTool::paintGL() worldPos = startPos; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setZ(startPos.z() + signZ * rect_h); + worldPos.setY(startPos.y() + signY * rect_h); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { worldPos.setX(startPos.x() + signX * rect_w); - worldPos.setY(startPos.y() + signY * rect_h); + worldPos.setZ(startPos.z() + signZ * rect_h); } else { // YZ worldPos.setY(startPos.y() + signY * rect_w); worldPos.setZ(startPos.z() + signZ * rect_h); @@ -245,10 +245,10 @@ void RectangleTool::paintGL() if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z()); - p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z()); + p4.setX(p1.x()); p4.setY(p3.y()); p4.setZ(p1.z()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z()); - p4.setX(p1.x()); p4.setY(p3.y()); p4.setZ(p1.z()); + p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) { p2.setX(p1.x()); p2.setY(p3.y()); p2.setZ(p1.z()); p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z()); @@ -300,10 +300,10 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons double current_w, current_h; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.z()); + current_h = qAbs(mouseDir.y()); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { current_w = qAbs(mouseDir.x()); - current_h = qAbs(mouseDir.y()); + current_h = qAbs(mouseDir.z()); } else { // YZ current_w = qAbs(mouseDir.y()); current_h = qAbs(mouseDir.z()); @@ -316,10 +316,10 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons worldPos = p1_3d; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { worldPos.setX(p1_3d.x() + signX * rect_w); - worldPos.setZ(p1_3d.z() + signZ * rect_h); + worldPos.setY(p1_3d.y() + signY * rect_h); } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { worldPos.setX(p1_3d.x() + signX * rect_w); - worldPos.setY(p1_3d.y() + signY * rect_h); + worldPos.setZ(p1_3d.z() + signZ * rect_h); } else { // YZ worldPos.setY(p1_3d.y() + signY * rect_w); worldPos.setZ(p1_3d.z() + signZ * rect_h); @@ -338,15 +338,15 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons double w, h; if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) { - p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z()); - p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z()); - w = qAbs(p3_3d.x() - p1_3d.x()); - h = qAbs(p3_3d.z() - p1_3d.z()); - } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z()); p4_3d.setX(p1_3d.x()); p4_3d.setY(p3_3d.y()); p4_3d.setZ(p1_3d.z()); w = qAbs(p3_3d.x() - p1_3d.x()); h = qAbs(p3_3d.y() - p1_3d.y()); + } else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) { + p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z()); + p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z()); + w = qAbs(p3_3d.x() - p1_3d.x()); + h = qAbs(p3_3d.z() - p1_3d.z()); } else { // YZ p2_3d.setX(p1_3d.x()); p2_3d.setY(p3_3d.y()); p2_3d.setZ(p1_3d.z()); p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z());