Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将透视图的zoomvalue设置为等于透视图_C#_Math_Matrix_Sharpdx - Fatal编程技术网

C# 将透视图的zoomvalue设置为等于透视图

C# 将透视图的zoomvalue设置为等于透视图,c#,math,matrix,sharpdx,C#,Math,Matrix,Sharpdx,我正在构建一个具有两种视图模式的小型形状编辑器:正交视图和透视视图。 所以我发现如果透视图和正交图的ZoomValue相等(或者尽可能相等),那就太好了 透视视图的zoomvalue仅通过设置z轴上的位置来存档。对于正交,我将左、右、顶角和底角从0.0缩放到X 是否可以将它们均匀缩放?有解决方案吗?我会将相等的缩放值解释为,在每个缩放模式下,形状将显示为相同的大小。由于在透视图中,形状部分的外观尺寸将取决于它们与相机的距离,因此只能在形状内的特定深度处实现这种“相等缩放” 假设您希望在两种视图模

我正在构建一个具有两种视图模式的小型形状编辑器:正交视图和透视视图。 所以我发现如果透视图和正交图的ZoomValue相等(或者尽可能相等),那就太好了

透视视图的zoomvalue仅通过设置z轴上的位置来存档。对于正交,我将左、右、顶角和底角从0.0缩放到X


是否可以将它们均匀缩放?有解决方案吗?

我会将相等的缩放值解释为,在每个缩放模式下,形状将显示为相同的大小。由于在透视图中,形状部分的外观尺寸将取决于它们与相机的距离,因此只能在形状内的特定深度处实现这种“相等缩放”

假设您希望在两种视图模式下,形状中最靠近摄影机的部分显示相等

要从透视视图生成等效的正交视图,请首先计算形状最近点处视锥台的宽度和高度

width=tan(fovX)*距离

height=tan(fovY)*距离

其中,
distance
是相机到形状上最近点的距离,
fovX,fovY
是透视模式下视野的水平和垂直角度

然后,您可以将正交视图矩形设置为
0,0,宽度,高度
,假设您将相机置于形状的中心

要从正交视图生成等效的透视视图,只需反转以下等式:

distance=width/tan(fovX)

距离=高度/棕褐色(fovY)


然后将相机的z值设置为对象上最近的点-
距离
,假设您向下看正z轴。如果您的相机始终位于原点,则可以设置对象的z值,使其最近点的z值等于距离。

谢谢!我选择了第二个,生成正交的透视图:)伟大的:)