该方法的目的是获取点(c),然后将当前质心(x,y)移动到新提供的协调。这是通过找到两者的差异然后将点转换为新坐标来完成的。但是,我不知道如何设置新的质心值,因为我将方法设置为空洞....任何想法? 对不起,所有的代码,试图尽可能少。 Translate取点(x,y)并加上给定的值(dx,dy)。
private Point centroid;
Triangle(Point a, Point b, Point c) {
this.a = a;
this.b = b;
this.c = c;
triPoints = new Point[] { a, b, c };
}
public Point getCentroid() {
Point centroid;
double x = 0.0;
double y = 0.0;
x = (a.getX() + b.getX() + c.getX()) / 3;
y = (a.getY() + b.getY() + c.getY()) / 3;
centroid = new Point(x, y);
return centroid;
}
public void move(double dx, double dy) {
centroid = getCentroid();
System.out.println(centroid.getX() + " "+ centroid.getY());
centroid = centroid.translate(dx, dy);
Point newCentroid = new Point(centroid.getX(),centroid.getY());
System.out.println(newCentroid.getX() + " "+ newCentroid.getY());
if(getCentroid().equals(newCentroid)){
}else{
}
for (int index = 0; index < triPoints.length - 1; index++) {
triPoints[index].translate(dx, dy);
}
}
public void move(Point c) {
double firstx = 0.0;
double firsty = 0.0;
Point f = getCentroid();
System.out.println(f.getX()+ " "+ f.getY() + " "+ c.getX()+ " "+ c.getY());
if (f.getX() >= c.getX()) {
firstx = c.getX() - f.getX();}
else{
firstx = Math.abs(f.getX() - c.getX());
}
if (f.getY()>= c.getY()){
firsty = c.getY() - f.getY();
}
else {
firsty = Math.abs(f.getY() -c.getY());
}
move(firstx, firsty);
//System.out.println(centroid.getX() + " " + centroid.getY());
}
答案 0 :(得分:0)
我假设您使用的是java.awt.Point?
如果是这样,centroid.translate(dx,dy)是一个void方法:实际上没有返回任何值,所以
centroid =centroid.translate(dx, dy)
实际上并没有做任何事情。
由于您只是想要一个新的质心,请尝试
centroid = getCentroid();
System.out.println(centroid.getX() + " "+ centroid.getY());
Point newCentroid = new Point(centroid.getX() + dx,centroid.getY() + dy);
System.out.println(newCentroid.getX() + " "+ newCentroid.getY());
如果您翻译后想要做的就是制作新的质心,则无需进行翻译。
此外,翻译函数和构造函数都没有加倍(如果你在标准的x,y图上,这是有意义的),所以你可以使dx和dy int。