2012-12-28 30 views
2

我想知道是否有任何簡單的代碼示例或指南在Java中創建3D矩形而不使用任何3D庫(如Java3D或OpenGL)!在Java中沒有任何庫的情況下編程3D形狀

+0

_在Java中創建3D矩形而不使用任何3D庫,比如Java3D或OpenGL_,但是爲什麼? –

+0

你將不得不多解釋一個3D矩形,只有6個點的空間。 – Frozendragon

+1

您是否在問如何編寫渲染器?有很多來源......大部分都是用C++語言編寫的,但翻譯起來並不困難......或者您正在尋求一個軟件渲染庫 - 我懷疑這是否存在/有重要的支持,因爲它不會使在許多情況下需要做的事情 – gbtimmon

回答

1

一個3D矩形下載被稱爲直角棱鏡。

定義3D形狀不是很困難。這是一個矩形棱鏡的定義。

import java.awt.Graphics; 

public class RectangularPrism { 

    protected Point3D originPoint; 
    protected Point3D xPoint; 
    protected Point3D yPoint; 
    protected Point3D zPoint; 

    public RectangularPrism() { 

    } 

    public RectangularPrism(Point3D originPoint, Point3D xPoint, 
      Point3D yPoint, Point3D zPoint) { 
     this.originPoint = originPoint; 
     this.xPoint = xPoint; 
     this.yPoint = yPoint; 
     this.zPoint = zPoint; 
    } 

    public void setOriginPoint(Point3D originPoint) { 
     this.originPoint = originPoint; 
    } 

    public void setxPoint(Point3D xPoint) { 
     this.xPoint = xPoint; 
    } 

    public void setyPoint(Point3D yPoint) { 
     this.yPoint = yPoint; 
    } 


    public void setzPoint(Point3D zPoint) { 
     this.zPoint = zPoint; 
    } 

    public void render(Graphics g, Point3D viewPoint) { 

    } 

    public class Point3D { 
     protected int x; 
     protected int y; 
     protected int z; 

     public int getX() { 
      return x; 
     } 

     public void setX(int x) { 
      this.x = x; 
     } 

     public int getY() { 
      return y; 
     } 

     public void setY(int y) { 
      this.y = y; 
     } 

     public int getZ() { 
      return z; 
     } 

     public void setZ(int z) { 
      this.z = z; 
     } 

    } 

} 

這是創建呈現方法,需要一些計算。對於您想要定義的每個3D形狀,計算結果都會有所不同。

您的調用例程將不得不找出渲染所有3D形狀的順序。基本上,必須首先渲染最遠的3D形狀,以便更接近的3D形狀重合。

3D庫不僅具有所有這一切,它還經過優化,可以在儘可能短的時間內渲染3D場景。

相關問題