Skip to content

Instantly share code, notes, and snippets.

@Deamon5550
Created September 21, 2014 07:13
Show Gist options
  • Save Deamon5550/a3e73ed25e50edf5fc36 to your computer and use it in GitHub Desktop.
Save Deamon5550/a3e73ed25e50edf5fc36 to your computer and use it in GitHub Desktop.
Vector
package com.thevoxelbox.node.util;
public class Vector
{
double[] vec;
public Vector(double x, double y, double z)
{
this.vec = new double[] { x, y, z };
}
public double getX()
{
return vec[0];
}
public double getY()
{
return vec[1];
}
public double getZ()
{
return vec[2];
}
public Vector add(Vector v)
{
return new Vector(getX() + v.getX(), getY() + v.getY(), getZ() + v.getZ());
}
public Vector multipy(double scalar)
{
return new Vector(getX() * scalar, getY() * scalar, getZ() * scalar);
}
public Vector project(Vector b)
{
Vector a = clone();
a.multipy(a.dot(b) / a.lengthSquared());
return a;
}
public double dot(Vector v)
{
return getX() * v.getX() + getY() * v.getY() + getZ() * v.getZ();
}
public Vector cross(Vector v)
{
return new Vector(getY() * v.getZ() - getZ() * v.getY(), getZ() * v.getX() - getX() * v.getZ(), getX() * v.getY() - getY() * v.getX());
}
public Vector normalize()
{
return new Vector(getX() / length(), getY() / length(), getZ() / length());
}
public double length()
{
return Math.sqrt(getX() * getX() + getY() * getY() + getZ() * getZ());
}
public double lengthSquared()
{
return getX() * getX() + getY() * getY() + getZ() * getZ();
}
public Vector clone()
{
return new Vector(getX(), getY(), getZ());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment