vtk - 如何将世界坐标转换为VTK中的视图坐标
问题描述
在我的程序(基于python)中,需要将一个点从世界坐标([x,y,z])转换为视图坐标([j,k,t],j和k在-1和1之间,t是VTK 中的深度)。我找到了vtkCoordinate
有SetCoordinateSystemToView()
方法的类。但它不起作用。
coordinate = vtk.vtkCoordinate()
coordinate.SetCoordinateSystemToWorld()
coordinate.SetValue(x,y,z)
coordinate.SetCoordinateSystemToDisplay()
viewCoord=coordinate.GetComputedValue(renderer)
结果很奇怪,而且肯定是错误的。有一些类似GetComputedDisplayValue()
或GetComputedViewportValue()
的方法可以从一个坐标系中得到相应的结果来显示或视口坐标系,但是没有类似GetComputedViewValue()
. 很困惑,需要帮助,谢谢。
解决方案
这有效:
import vtk
coordinate = vtk.vtkCoordinate()
coordinate.SetCoordinateSystemToWorld()
coordinate.SetValue(1,2,1)
# test:
from vedo import *
plt = Plotter()
print("press shift-I on the red dot, then press q")
plt.show(Cube(), Point([1,2,1], r=20), axes=1)
viewCoord = coordinate.GetComputedViewportValue(plt.renderer)
print(viewCoord) # matches!
推荐阅读
- swift - 特定应用程序从 xcode 运行良好。但是从模拟器打开时崩溃
- kdb - 所有的kdb代码都写在命令提示符下吗?
- sql - ORACLE: 索引处缺少 IN 或 OUT 参数:: 1
- javascript - Angular strictTemplates 联合类型
- git - 我怎样才能在 git 中只提交分阶段的帅哥?
- cassandra - 无法使用 -dc (如 -local 参数)运行修复
- node.js - Node JS Sequelize多对多关系抛出错误列id不存在
- html - 确定图像上的位置文本
- swift - 通过launchIsDefaultUserInfoKey启动应用程序时如何禁用重新打开文档
- javascript - 从 Table.getProperties('childNodes/children') 中提取子节点