这是一个家庭作业问题,但对代码或其他任何想法或暗示以下问题没有任何期望。
我在3D世界坐标中有一组立方体,我必须在两个独立的区域(平行和透视)中使用两个投影来显示它们。平行没问题,没有任何问题,但使用透视投影显示相同的场景对我来说变得很麻烦。
屏幕坐标世界似乎是一个好主意,但我不知道应用它们的坐标,原始实际坐标,新坐标。
感谢您的时间。
PS:我们只允许使用Java2D Api。
答案 0 :(得分:0)
要执行透视投影,您还需要两个额外的东西:透视点(“眼睛”所在的位置)和投影平面。利用平行投影,透视点/眼睛和平面可以是距物体(例如,立方体)的任意距离。但透视投影有点复杂。
建立眼睛和投影平面后,您需要迭代您的立方体。理想情况下,您可以将它们从最远的立方体迭代到最近的眼睛 - 这样更接近的立方体将覆盖更远的立方体。
对于每个立方体,确定每个点与眼睛的距离。然后对于每个面(再次按照距离减小的顺序),计算每个顶点的投影点。您可以跳过那些带有遮挡点的面(每个立方体的最远顶点)。
要计算特定顶点的投影点,您需要在投影平面上找到该点。这一点将是从眼睛到顶点的线与投影平面相交的位置。这需要一些数学,但不应该太困难。