Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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
使用Java2D的两个视口_Java_3d - Fatal编程技术网

使用Java2D的两个视口

使用Java2D的两个视口,java,3d,Java,3d,这是一个家庭作业问题,但是对代码或任何东西都没有期望,只是对以下问题的一个想法或提示 我有一组三维世界坐标的立方体,我必须在两个独立的区域(平行和透视)使用两个投影来显示它们。平行进行得很好,没有问题,但是使用透视投影显示同一场景对我来说是个麻烦 从世界到屏幕的坐标看起来是个好主意,但我不知道要将它们应用到哪个坐标上,原始的真实坐标,新的坐标 谢谢你抽出时间 PS:我们只允许使用Java2D Api。要执行透视投影,您还需要两件事情:透视点(眼睛所在的位置)和投影平面。通过平行投影,透视点/眼睛

这是一个家庭作业问题,但是对代码或任何东西都没有期望,只是对以下问题的一个想法或提示

我有一组三维世界坐标的立方体,我必须在两个独立的区域(平行和透视)使用两个投影来显示它们。平行进行得很好,没有问题,但是使用透视投影显示同一场景对我来说是个麻烦

从世界到屏幕的坐标看起来是个好主意,但我不知道要将它们应用到哪个坐标上,原始的真实坐标,新的坐标

谢谢你抽出时间


PS:我们只允许使用Java2D Api。

要执行透视投影,您还需要两件事情:透视点(眼睛所在的位置)和投影平面。通过平行投影,透视点/眼睛和平面可以与对象(例如立方体)保持任意距离。但是透视投影要复杂一些

一旦你建立了你的眼睛和投影平面,你将需要迭代你的立方体。理想情况下,您可以从最远的立方体到眼睛再到最近的立方体进行迭代-这样,较近的立方体将覆盖较远的立方体

对于每个立方体,确定每个点与眼睛的距离。然后,对于每个面(再次按距离递减的顺序),计算每个顶点的投影点。可以跳过具有遮挡点的面(每个立方体的最远顶点)

要计算特定顶点的投影点,需要在投影平面上找到该点。该点是从眼睛到顶点的直线与投影平面相交的位置。这需要一些数学知识,但不应该太难