diff --git a/src/SketchGrid.cpp b/src/SketchGrid.cpp index 1353af4..b934c59 100644 --- a/src/SketchGrid.cpp +++ b/src/SketchGrid.cpp @@ -43,11 +43,11 @@ void SketchGrid::drawGridLines(SketchPlane plane) { if (i == 0 || i % 5 == 0) continue; if (plane == XY) { - glVertex3f(i, -gridSize, 0); glVertex3f(i, gridSize, 0); - glVertex3f(-gridSize, i, 0); glVertex3f(gridSize, i, 0); - } else if (plane == XZ) { glVertex3f(i, 0, -gridSize); glVertex3f(i, 0, gridSize); glVertex3f(-gridSize, 0, i); glVertex3f(gridSize, 0, i); + } else if (plane == XZ) { + glVertex3f(i, -gridSize, 0); glVertex3f(i, gridSize, 0); + glVertex3f(-gridSize, i, 0); glVertex3f(gridSize, i, 0); } else { // YZ glVertex3f(0, i, -gridSize); glVertex3f(0, i, gridSize); glVertex3f(0, -gridSize, i); glVertex3f(0, gridSize, i); @@ -63,11 +63,11 @@ void SketchGrid::drawGridLines(SketchPlane plane) { if (i == 0) continue; if (plane == XY) { - glVertex3f(i, -gridSize, 0); glVertex3f(i, gridSize, 0); - glVertex3f(-gridSize, i, 0); glVertex3f(gridSize, i, 0); - } else if (plane == XZ) { glVertex3f(i, 0, -gridSize); glVertex3f(i, 0, gridSize); glVertex3f(-gridSize, 0, i); glVertex3f(gridSize, 0, i); + } else if (plane == XZ) { + glVertex3f(i, -gridSize, 0); glVertex3f(i, gridSize, 0); + glVertex3f(-gridSize, i, 0); glVertex3f(gridSize, i, 0); } else { // YZ glVertex3f(0, i, -gridSize); glVertex3f(0, i, gridSize); glVertex3f(0, -gridSize, i); glVertex3f(0, gridSize, i); @@ -92,14 +92,14 @@ void SketchGrid::drawAxes(SketchPlane plane) // Y Axis (Green) if (plane == XY || plane == YZ) { glColor3f(0.0f, 1.0f, 0.0f); - glVertex3f(0, -axisLength, 0); - glVertex3f(0, axisLength, 0); + glVertex3f(0, 0, -axisLength); + glVertex3f(0, 0, axisLength); } // Z Axis (Blue) if (plane == XZ || plane == YZ) { glColor3f(0.0f, 0.0f, 1.0f); - glVertex3f(0, 0, -axisLength); - glVertex3f(0, 0, axisLength); + glVertex3f(0, -axisLength, 0); + glVertex3f(0, axisLength, 0); } glEnd(); diff --git a/src/ViewportWidget.cpp b/src/ViewportWidget.cpp index 5b9377d..e896075 100644 --- a/src/ViewportWidget.cpp +++ b/src/ViewportWidget.cpp @@ -200,8 +200,8 @@ void ViewportWidget::paintGL() worldPos.setY(m_snapVertex.Y()); worldPos.setZ(m_snapVertex.Z()); } else if (m_isSnappingHorizontal) { - if (m_currentPlane == SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y()); - else if (m_currentPlane == SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z()); + if (m_currentPlane == SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z()); + else if (m_currentPlane == SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y()); else if (m_currentPlane == SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z()); } else if (m_isSnappingVertical) { if (m_currentPlane == SketchPlane::XY) worldPos.setX(m_firstLinePoint.X()); @@ -225,22 +225,22 @@ void ViewportWidget::paintGL() if (m_isSnappingHorizontal) { if (m_currentPlane == SketchPlane::XY) { - glVertex3f(midPoint.x() - indicatorSize, midPoint.y() + indicatorOffset, midPoint.z()); - glVertex3f(midPoint.x() + indicatorSize, midPoint.y() + indicatorOffset, midPoint.z()); - } else if (m_currentPlane == SketchPlane::XZ) { glVertex3f(midPoint.x() - indicatorSize, midPoint.y(), midPoint.z() + indicatorOffset); glVertex3f(midPoint.x() + indicatorSize, midPoint.y(), midPoint.z() + indicatorOffset); + } else if (m_currentPlane == SketchPlane::XZ) { + glVertex3f(midPoint.x() - indicatorSize, midPoint.y() + indicatorOffset, midPoint.z()); + glVertex3f(midPoint.x() + indicatorSize, midPoint.y() + indicatorOffset, midPoint.z()); } else if (m_currentPlane == SketchPlane::YZ) { glVertex3f(midPoint.x(), midPoint.y() - indicatorSize, midPoint.z() + indicatorOffset); glVertex3f(midPoint.x(), midPoint.y() + indicatorSize, midPoint.z() + indicatorOffset); } } else { // m_isSnappingVertical if (m_currentPlane == SketchPlane::XY) { - glVertex3f(midPoint.x() + indicatorOffset, midPoint.y() - indicatorSize, midPoint.z()); - glVertex3f(midPoint.x() + indicatorOffset, midPoint.y() + indicatorSize, midPoint.z()); - } else if (m_currentPlane == SketchPlane::XZ) { glVertex3f(midPoint.x() + indicatorOffset, midPoint.y(), midPoint.z() - indicatorSize); glVertex3f(midPoint.x() + indicatorOffset, midPoint.y(), midPoint.z() + indicatorSize); + } else if (m_currentPlane == SketchPlane::XZ) { + glVertex3f(midPoint.x() + indicatorOffset, midPoint.y() - indicatorSize, midPoint.z()); + glVertex3f(midPoint.x() + indicatorOffset, midPoint.y() + indicatorSize, midPoint.z()); } else if (m_currentPlane == SketchPlane::YZ) { glVertex3f(midPoint.x(), midPoint.y() + indicatorOffset, midPoint.z() - indicatorSize); glVertex3f(midPoint.x(), midPoint.y() + indicatorOffset, midPoint.z() + indicatorSize); @@ -287,8 +287,8 @@ void ViewportWidget::mousePressEvent(QMouseEvent *event) } else { QVector3D worldPos = unproject(event->pos()); if (m_isSnappingHorizontal) { - if (m_currentPlane == SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y()); - else if (m_currentPlane == SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z()); + if (m_currentPlane == SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z()); + else if (m_currentPlane == SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y()); else if (m_currentPlane == SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z()); } else if (m_isSnappingVertical) { if (m_currentPlane == SketchPlane::XY) worldPos.setX(m_firstLinePoint.X()); @@ -322,10 +322,10 @@ void ViewportWidget::mouseMoveEvent(QMouseEvent *event) switch (m_currentPlane) { case SketchPlane::XY: - shouldSnap = qAbs(worldPos.x()) < snapRectHalfSize && qAbs(worldPos.y()) < snapRectHalfSize; + shouldSnap = qAbs(worldPos.x()) < snapRectHalfSize && qAbs(worldPos.z()) < snapRectHalfSize; break; case SketchPlane::XZ: - shouldSnap = qAbs(worldPos.x()) < snapRectHalfSize && qAbs(worldPos.z()) < snapRectHalfSize; + shouldSnap = qAbs(worldPos.x()) < snapRectHalfSize && qAbs(worldPos.y()) < snapRectHalfSize; break; case SketchPlane::YZ: shouldSnap = qAbs(worldPos.y()) < snapRectHalfSize && qAbs(worldPos.z()) < snapRectHalfSize; @@ -359,10 +359,10 @@ void ViewportWidget::mouseMoveEvent(QMouseEvent *event) bool isClose = false; switch (m_currentPlane) { case SketchPlane::XY: - isClose = qAbs(worldPos.x() - vertex.X()) < snapRectHalfSize && qAbs(worldPos.y() - vertex.Y()) < snapRectHalfSize; + isClose = qAbs(worldPos.x() - vertex.X()) < snapRectHalfSize && qAbs(worldPos.z() - vertex.Z()) < snapRectHalfSize; break; case SketchPlane::XZ: - isClose = qAbs(worldPos.x() - vertex.X()) < snapRectHalfSize && qAbs(worldPos.z() - vertex.Z()) < snapRectHalfSize; + isClose = qAbs(worldPos.x() - vertex.X()) < snapRectHalfSize && qAbs(worldPos.y() - vertex.Y()) < snapRectHalfSize; break; case SketchPlane::YZ: isClose = qAbs(worldPos.y() - vertex.Y()) < snapRectHalfSize && qAbs(worldPos.z() - vertex.Z()) < snapRectHalfSize; @@ -403,9 +403,9 @@ void ViewportWidget::mouseMoveEvent(QMouseEvent *event) double angle = 0; if (m_currentPlane == SketchPlane::XY) { - angle = atan2(delta.y(), delta.x()); - } else if (m_currentPlane == SketchPlane::XZ) { angle = atan2(delta.z(), delta.x()); + } else if (m_currentPlane == SketchPlane::XZ) { + angle = atan2(delta.y(), delta.x()); } else if (m_currentPlane == SketchPlane::YZ) { angle = atan2(delta.z(), delta.y()); } @@ -476,12 +476,12 @@ void ViewportWidget::onSketchModeStarted(SketchPlane plane) float targetXRot = m_xRot; float targetYRot = m_yRot; switch (plane) { - case SketchPlane::XY: // Front view - targetXRot = 0; + case SketchPlane::XY: // Top view + targetXRot = -90 * 16; targetYRot = 0; break; - case SketchPlane::XZ: // Top view - targetXRot = -90 * 16; + case SketchPlane::XZ: // Front view + targetXRot = 0; targetYRot = 0; break; case SketchPlane::YZ: // Right view @@ -617,10 +617,10 @@ void ViewportWidget::drawAxisLabels(QPainter& painter, const QMatrix4x4& modelVi if (m_currentPlane == SketchPlane::XY) { drawLabelsForAxis(0); // X - drawLabelsForAxis(1); // Y + drawLabelsForAxis(2); // Y } else if (m_currentPlane == SketchPlane::XZ) { drawLabelsForAxis(0); // X - drawLabelsForAxis(2); // Z + drawLabelsForAxis(1); // Z } else if (m_currentPlane == SketchPlane::YZ) { drawLabelsForAxis(1); // Y drawLabelsForAxis(2); // Z @@ -705,8 +705,8 @@ QVector3D ViewportWidget::unproject(const QPoint& screenPos) QVector3D planeNormal; switch (m_currentPlane) { - case SketchPlane::XY: planeNormal = QVector3D(0, 0, 1); break; - case SketchPlane::XZ: planeNormal = QVector3D(0, 1, 0); break; + case SketchPlane::XY: planeNormal = QVector3D(0, 1, 0); break; + case SketchPlane::XZ: planeNormal = QVector3D(0, 0, 1); break; case SketchPlane::YZ: planeNormal = QVector3D(1, 0, 0); break; case SketchPlane::NONE: return QVector3D(); }