⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector.java

📁 如果对java3D感兴趣的朋友
💻 JAVA
字号:
import java.awt.*;

public class vector{
	public double x, y , z; //3D components,	public Point p;  //position on 2D screen;
	public double length;	public vector(double x, double y, double z){
		this.x = x;
		this.y = y;
		this.z = z;
		length = Math.sqrt(x*x + y*y + z*z);

		if(z <= 0)
			p = new Point((int)(x*620/1) + 320, (int)(-y*600/1) + 240);
		else
			p = new Point((int)(x*620/z) + 320, (int)(-y*600/z) + 240);
	}

	public void draw(Graphics g){
		g.setColor(Color.black);
		g.drawRect(p.x, p.y, 1, 1);
	}

	public boolean inScreen(){
		Rectangle screen = new Rectangle(0,0, 640, 480);
		return screen.contains(p) && z >0;
	}

	public double get_x(){
		return x;
	}

	public double get_y(){
		return y;
	}

	public double get_z(){
		return z;
	}

	public vector add(vector v){
		return new vector(x + v.x, y + v.y, z + v.z);
	}

	public vector subtract(vector v){
		return new vector(x - v.x, y - v.y, z - v.z);
	}

	public vector scale(double s){
		return new vector(x*s, y*s, z*s);
	}

	public vector unit(){
		return new vector(x/length, y/length, z/length);
	}

	public double dot(vector v){
		return x*v.x + y*v.y + z*v.z;
	}

	public vector cross(vector v){
		return new vector(y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x);
	}

	public String toString(){
		return "(" + x + ", " + y + ", " + z + ")";
	}

	public vector rotate_XZ(double angle){
		return new vector(Math.cos(angle)*x - Math.sin(angle)*z, y, Math.sin(angle)*x + Math.cos(angle)*z);

	}

	public vector rotate_YZ(double angle){
		return new vector(x, Math.cos(angle)*y - Math.sin(angle)*z, Math.sin(angle)*y + Math.cos(angle)*z);
	}

	public vector rotate_vertical(double angle){
		return new vector(x, Math.sqrt(x*x + z*z)*Math.tan(angle) , z);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -