Wpf视口坐标

时间:2009-12-26 01:03:32

标签: wpf 3d coordinates viewport

嘿伙计们,我正在使用wpf 3d,我正在编写一个程序,它将在屏幕上从左到右创建3d图块,但我需要知道我的界限在X,Y即(-x-0) (0-x +)所以我知道何时开始另一排瓷砖。我最初的想法是试图找出一个复杂的算法,从像素到屏幕坐标,但似乎应该有一个更简单的方法。

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您想了解Viewport3DVisual可以看到的3D坐标范围。

这个问题没有一个答案。要知道为什么,想象一下你正坐在厨房的桌子边吃早餐,碰巧透过窗户看。你能看到什么水平范围?好吧,你可以看到远处约五英里的蓝色山脉,但只有三十英尺的后栅栏。换句话说,可视区域不是矩形棱镜,而是金字塔。

最重要的是,您必须在有意义之前指定所涉及的距离,通过视口可以看到水平和垂直范围。

指定距离后,以下是如何将视口映射到给定平面上的3D点,而无需自行完成所有计算:

  1. 使用相同的相机设置在单独的Viewport3dVisual中创建模型,但模型仅包含所需距离的单个大矩形。
  2. 使用命中测试来测试视口的每个角落,接收命中测试结果回调。
  3. 从命中测试结果中提取矩形上的坐标,并将其用于计算。
  4. 这种技术的优点是可以在相机可能面对的任何地方可靠地工作,甚至适用于动画相机等。

    注意:如果我误解了这个问题,并且您只是在询问如何在2D中布置包含3D内容的图块行,那么您只需使用WrapPanel即可获得您描述的效果。如果要进行数据绑定,请使用带有WrapPanel的ItemPanelTemplate的ItemsControl或ListBox。