Vector class
This commit is contained in:
@ -5,23 +5,23 @@ import java.awt.geom.Point2D;
|
|||||||
|
|
||||||
class Node {
|
class Node {
|
||||||
|
|
||||||
public static final double RADIUS = 10;
|
public static final double RADIUS = 12;
|
||||||
|
|
||||||
public static final Color COLOR = Color.WHITE;
|
public static final Color COLOR = Color.WHITE;
|
||||||
|
|
||||||
Point2D.Double pos;
|
Vector pos;
|
||||||
|
|
||||||
double radius;
|
double radius;
|
||||||
|
|
||||||
Color color;
|
Color color;
|
||||||
|
|
||||||
Node(double x, double y) {
|
Node(double x, double y) {
|
||||||
this.pos = new Point2D.Double(x, y);
|
this.pos = new Vector(x, y);
|
||||||
this.radius = RADIUS;
|
this.radius = RADIUS;
|
||||||
this.color = COLOR;
|
this.color = COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean inside(double x, double y) {
|
boolean inside(double x, double y) {
|
||||||
return pos.distance(x, y) <= radius;
|
return pos.dist(x, y) <= radius;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
64
src/main/java/de/oshgnacknak/gruphi/Vector.java
Normal file
64
src/main/java/de/oshgnacknak/gruphi/Vector.java
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package de.oshgnacknak.gruphi;
|
||||||
|
|
||||||
|
public class Vector {
|
||||||
|
|
||||||
|
double x, y;
|
||||||
|
|
||||||
|
public Vector(double x, double y) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector copy() {
|
||||||
|
return new Vector(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector add(Vector v) {
|
||||||
|
x += v.x;
|
||||||
|
y += v.y;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector sub(Vector v) {
|
||||||
|
x -= v.x;
|
||||||
|
y -= v.y;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector mul(double d) {
|
||||||
|
x *= d;
|
||||||
|
y *= d;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
double dot(Vector v) {
|
||||||
|
return x*v.x + y*v.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
double mag() {
|
||||||
|
return Math.sqrt(dot(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector norm() {
|
||||||
|
return mul(1 / mag());
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector setMag(double mag) {
|
||||||
|
return mul(mag/this.mag());
|
||||||
|
}
|
||||||
|
|
||||||
|
double dist(Vector v) {
|
||||||
|
return dist(v.x, v.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
double dist(double x, double y) {
|
||||||
|
var dx = this.x - x;
|
||||||
|
var dy = this.y - y;
|
||||||
|
return Math.sqrt(dx*dx + dy*dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
double angle() {
|
||||||
|
return Math.atan2(y, x);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user