如何在tk制作相机?

时间:2018-02-24 09:30:56

标签: tcl tk coordinate-transformation

我有一个基于网格的坐标系,其中每个网格中心之间的距离是一组像素。在OpenGL中执行此操作我使用视图/投影矩阵制作了相机。可以通过设置矩阵元素来改变整个场景的视图中心和比例。

这是使用我在完成Tcl / Tk之前制作的OpenGL的原型。节点位置为{[1..5],[1..3]}(分数y偏移处的文本):

enter image description here

我如何在Tcl / Tk中实现这一目标?我正在阅读canvas zooming,但希望有一个更小的例子;在1..2,3..4之间创建直线,平移,缩放,再次平移,再次缩放。

1 个答案:

答案 0 :(得分:1)

Tk canvas小部件支持平移(它遵循Tk可滚动窗口协议),但不允许缩放视口。 (它有一个scale method,但这只会改变对象的坐标,这不是一回事;特别是它不会改变字体大小,嵌入窗口/图像大小,线条粗细等等。 。)您可以通过xviewyview方法控制平移,就​​像任何可滚动的Tk小部件一样。

但是,有一种替代方案可能更适合您。

Paul Obermeier的Tcl3D允许你将OpenGL与Tcl / Tk一起使用,可以让你在编写OpenGL代码时保留了很多你已经完成的工作,但它仍然提供了以下好处:能够使用Tcl / Tk。基本上,它的核心是它包含Togl,一个用于将OpenGL绘图表面呈现为Tk小部件的包,以及与OpenGL API的绑定。我知道有很多人使用Tcl3D为他们的(商业和开源)应用程序供电,你最终会得到一个应该提供两全其美的混合动力。 (另外,在Tcl应用程序中包含一些自定义C代码被认为是完全合理的,这些代码需要在关键位置获得更高的性能;这是完全良好的风格这样做。复杂的GUI有时需要那种的东西。)