Add .add() to Vector
This commit is contained in:
@ -55,8 +55,8 @@ public class Octree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class OctreeItem {
|
abstract class OctreeItem {
|
||||||
protected Vector center;
|
protected final Vector center;
|
||||||
protected double size;
|
protected final double size;
|
||||||
|
|
||||||
protected Body pseudoBody;
|
protected Body pseudoBody;
|
||||||
|
|
||||||
@ -76,10 +76,14 @@ abstract class OctreeItem {
|
|||||||
|
|
||||||
class OctreeNode extends OctreeItem {
|
class OctreeNode extends OctreeItem {
|
||||||
private final OctreeItem[] children;
|
private final OctreeItem[] children;
|
||||||
|
private final Vector p1;
|
||||||
|
private final Vector p2 ;
|
||||||
|
|
||||||
protected OctreeNode(Vector center, double size) {
|
protected OctreeNode(Vector center, double size) {
|
||||||
super(center, size);
|
super(center, size);
|
||||||
children = new OctreeItem[8];
|
children = new OctreeItem[8];
|
||||||
|
p1 = center.plus(new Vector(size / 2));
|
||||||
|
p2 = center.minus(new Vector(size / 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -106,7 +110,7 @@ class OctreeNode extends OctreeItem {
|
|||||||
Vector massCenter = new Vector();
|
Vector massCenter = new Vector();
|
||||||
for (OctreeItem oct : children) {
|
for (OctreeItem oct : children) {
|
||||||
if (oct == null) continue;
|
if (oct == null) continue;
|
||||||
massCenter = massCenter.plus(oct.pseudoBody.massCenter().times(oct.pseudoBody.mass() / mass));
|
massCenter.add(oct.pseudoBody.massCenter().times(oct.pseudoBody.mass() / mass));
|
||||||
}
|
}
|
||||||
this.pseudoBody = new Body(mass, massCenter);
|
this.pseudoBody = new Body(mass, massCenter);
|
||||||
}
|
}
|
||||||
@ -122,7 +126,7 @@ class OctreeNode extends OctreeItem {
|
|||||||
Vector force = new Vector();
|
Vector force = new Vector();
|
||||||
for (OctreeItem child : children) {
|
for (OctreeItem child : children) {
|
||||||
if (child == null) continue;
|
if (child == null) continue;
|
||||||
force = force.plus(child.getForcesOnBody(body, t));
|
force.add(child.getForcesOnBody(body, t));
|
||||||
}
|
}
|
||||||
return force;
|
return force;
|
||||||
}
|
}
|
||||||
@ -133,10 +137,12 @@ class OctreeNode extends OctreeItem {
|
|||||||
if (child == null) continue;
|
if (child == null) continue;
|
||||||
child.draw(cd);
|
child.draw(cd);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
Vector p1 = center.minus(new Vector(size / 2));
|
Vector p1 = center.minus(new Vector(size / 2));
|
||||||
Vector p2 = new Vector(size).minus(new Vector(Simulation.SECTION_SIZE / 2));
|
Vector p2 = new Vector(size).minus(new Vector(Simulation.SECTION_SIZE / 2));
|
||||||
cd.setColor(Color.CYAN);
|
cd.setColor(Color.CYAN);
|
||||||
cd.drawRectangle(p1.getScreenX(cd), p1.getScreenY(cd), p2.getScreenX(cd), p2.getScreenY(cd));
|
cd.drawRectangle(p1.getScreenX(cd), p1.getScreenY(cd), p2.getScreenX(cd), p2.getScreenY(cd));
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getOctantNum(Vector bodyPos) {
|
private int getOctantNum(Vector bodyPos) {
|
||||||
@ -146,8 +152,6 @@ class OctreeNode extends OctreeItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInOctant(Vector pos) {
|
private boolean isInOctant(Vector pos) {
|
||||||
Vector p1 = center.plus(new Vector(size / 2));
|
|
||||||
Vector p2 = center.minus(new Vector(size / 2));
|
|
||||||
return pos.getX() <= p1.getX() && pos.getY() <= p1.getY() && pos.getZ() <= p1.getZ() &&
|
return pos.getX() <= p1.getX() && pos.getY() <= p1.getY() && pos.getZ() <= p1.getZ() &&
|
||||||
pos.getX() >= p2.getX() && pos.getY() >= p2.getY() && pos.getZ() >= p2.getZ();
|
pos.getX() >= p2.getX() && pos.getY() >= p2.getY() && pos.getZ() >= p2.getZ();
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,12 @@ public class Vector {
|
|||||||
return new Vector(x + v.x, y + v.y, z + v.z);
|
return new Vector(x + v.x, y + v.y, z + v.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void add(Vector v) {
|
||||||
|
this.x += v.x;
|
||||||
|
this.y += v.y;
|
||||||
|
this.z += v.z;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the product of this vector and 'd'.
|
* Returns the product of this vector and 'd'.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user