Forráskód Böngészése

fix (1.34.7 -> 1.34.8): 修复bug 177 - 顺时针旋转90度功能实际执行逆时针旋转的问题

- 修正了RotateClockwise90函数中的viewUp向量计算公式,确保顺时针旋转功能正确工作
- 修复了顺时针和逆时针旋转90度功能使用相同计算公式的问题
- 更新了viewUp向量计算,使用正确的顺时针旋转矩阵公式
- 确保图像旋转方向与按钮功能描述一致,提升用户操作体验

改动文件:
- src/pages/view/components/viewers/stack.image.viewer.tsx
dengdx 2 hete
szülő
commit
549e3ebb74
3 módosított fájl, 21 hozzáadás és 5 törlés
  1. 16 0
      CHANGELOG.md
  2. 1 1
      package.json
  3. 4 4
      src/pages/view/components/viewers/stack.image.viewer.tsx

+ 16 - 0
CHANGELOG.md

@@ -2,6 +2,22 @@
 
 本项目的所有重要变更都将记录在此文件中。
 
+## [1.34.8] - 2025-12-30 16:45
+
+### 修复 (Fixed)
+- **修复bug 177 - 顺时针旋转90度功能实际执行逆时针旋转的问题** - 修正了RotateClockwise90函数中的viewUp向量计算公式,确保顺时针旋转功能正确工作
+  - 修复了顺时针和逆时针旋转90度功能使用相同计算公式的问题
+  - 更新了viewUp向量计算,使用正确的顺时针旋转矩阵公式
+  - 确保图像旋转方向与按钮功能描述一致,提升用户操作体验
+
+**核心改进:**
+- 功能正确性:顺时针旋转现在执行真正的顺时针旋转
+- 用户体验:旋转方向与用户期望完全一致
+- 代码准确性:修复了数学计算公式的错误
+
+**改动文件:**
+- src/pages/view/components/viewers/stack.image.viewer.tsx
+
 ## [1.34.7] - 2025-12-30 16:20
 
 ### 修复 (Fixed)

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zsis",
-  "version": "1.34.7",
+  "version": "1.34.8",
   "private": true,
   "description": "医学成像系统",
   "main": "main.js",

+ 4 - 4
src/pages/view/components/viewers/stack.image.viewer.tsx

@@ -622,7 +622,7 @@ export function RotateClockwise90(currentViewportId: string): void {
   const viewport = cornerstone.getEnabledElementByViewportId(currentViewportId)
     .viewport as cornerstone.StackViewport;
   const camera = viewport.getCamera();
-  // 计算新的旋转角度(当前角度 + 90度)
+  // 计算新的旋转角度(当前角度 - 90度)
   const newRotation = (camera.rotation ?? 0) - 90;
 
   // 但计算viewUp向量时,我们应该使用90度的弧度,而不是新角度的弧度!
@@ -631,11 +631,11 @@ export function RotateClockwise90(currentViewportId: string): void {
   // 获取当前的viewUp向量
   const currentViewUp = camera.viewUp || [0, 1, 0];
 
-  // 计算旋转后的viewUp向量(这才是正确的相对旋转
+  // 计算顺时针旋转90度的viewUp向量(与逆时针相反
   const newViewUp: [number, number, number] = [
-    currentViewUp[0] * Math.cos(ninetyDegreesRadians) -
+    currentViewUp[0] * Math.cos(ninetyDegreesRadians) +
     currentViewUp[1] * Math.sin(ninetyDegreesRadians),
-    currentViewUp[0] * Math.sin(ninetyDegreesRadians) +
+    -currentViewUp[0] * Math.sin(ninetyDegreesRadians) +
     currentViewUp[1] * Math.cos(ninetyDegreesRadians),
     0,
   ];