📄 vector.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 + -