移动点 - 质心

时间:2013-04-26 18:55:05

标签: java methods move

该方法的目的是获取点(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());

}

1 个答案:

答案 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。