| 593 | } |
| 594 | |
| 595 | void ModelViewerWidget::ChangeFocusDistance(const float delta) { |
| 596 | if (delta == 0.0f) { |
| 597 | return; |
| 598 | } |
| 599 | const float prev_focus_distance = focus_distance_; |
| 600 | float diff = delta * ZoomScale() * kFocusSpeed; |
| 601 | focus_distance_ -= diff; |
| 602 | if (focus_distance_ < kMinFocusDistance) { |
| 603 | focus_distance_ = kMinFocusDistance; |
| 604 | diff = prev_focus_distance - focus_distance_; |
| 605 | } else if (focus_distance_ > kMaxFocusDistance) { |
| 606 | focus_distance_ = kMaxFocusDistance; |
| 607 | diff = prev_focus_distance - focus_distance_; |
| 608 | } |
| 609 | const Eigen::Matrix4f vm_mat = QMatrixToEigen(model_view_matrix_).inverse(); |
| 610 | const Eigen::Vector3f tvec(0, 0, diff); |
| 611 | const Eigen::Vector3f tvec_rot = vm_mat.block<3, 3>(0, 0) * tvec; |
| 612 | model_view_matrix_.translate(tvec_rot(0), tvec_rot(1), tvec_rot(2)); |
| 613 | ComposeProjectionMatrix(); |
| 614 | UploadCoordinateGridData(); |
| 615 | update(); |
| 616 | } |
| 617 | |
| 618 | void ModelViewerWidget::ChangeNearPlane(const float delta) { |
| 619 | if (delta == 0.0f) { |
no test coverage detected