嘿伙计们,我正在使用wpf 3d,我正在编写一个程序,它将在屏幕上从左到右创建3d图块,但我需要知道我的界限在X,Y即(-x-0) (0-x +)所以我知道何时开始另一排瓷砖。我最初的想法是试图找出一个复杂的算法,从像素到屏幕坐标,但似乎应该有一个更简单的方法。
答案 0 :(得分:3)
如果我理解正确,您想了解Viewport3DVisual可以看到的3D坐标范围。
这个问题没有一个答案。要知道为什么,想象一下你正坐在厨房的桌子边吃早餐,碰巧透过窗户看。你能看到什么水平范围?好吧,你可以看到远处约五英里的蓝色山脉,但只有三十英尺的后栅栏。换句话说,可视区域不是矩形棱镜,而是金字塔。
最重要的是,您必须在有意义之前指定所涉及的距离,通过视口可以看到水平和垂直范围。
指定距离后,以下是如何将视口映射到给定平面上的3D点,而无需自行完成所有计算:
这种技术的优点是可以在相机可能面对的任何地方可靠地工作,甚至适用于动画相机等。
注意:如果我误解了这个问题,并且您只是在询问如何在2D中布置包含3D内容的图块行,那么您只需使用WrapPanel即可获得您描述的效果。如果要进行数据绑定,请使用带有WrapPanel的ItemPanelTemplate的ItemsControl或ListBox。