博文
用Java实现3D模型成像(2005-12-16 11:55:00)
摘要: 代码如此的短,被我优化过,所以不很容易看懂。有这个想法源于看图形学时看到的直线的画法,当时我想,用这个方法用来画空间投射线也应该很容易。于是就做了这个基于空间投射线的3D模型成像。
代码里面基本是算法,但是终归要有一个3D模型才能成像,于是我建立了一个3维数组,用来储存空间的点信息。也就是byte[][][] data;然后随便画了几个矩形、几个点,看起来效果还是不错的。(其实class Mod里面基本上都在画这些点和矩形)
【原理】从视点透出201×201的空间投射线,如果和空间中的3D模型相碰撞则返回并记录下点的颜色信息。最后产生一张201×201的2D图形,然后放大到603×603,并显示。
用(E)(D)(S)(F)来控制视点的上下左右移动,用(J)(K)(L)来控制视点的前进后退和复原。
【Model.java】
import java.awt.*;import java.awt.event.*;import java.awt.image.*;import javax.swing.*;
public class Model{ public static void main(String [] args){ MFrame f = new MFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(608,628); f.setVisible(true); }}
class MFrame extends JFrame{ MFrame(){  ......
