0

我正在为我的学士论文设计一些模拟钢丝绳的程序。但是,当试图使一个点(绞线的中心(midden)围绕电缆的中心(middencable)旋转时,该点并没有旋转,而是呈螺旋形:转换为电缆的中心。

我的代码是这样的:

z =  Math.toRadians( z);
        double xpoint = super.midden.getX(); //original point
        double ypoint = super.midden.getY(); //original point
        double cCableX = super.middenCable.getX();
        double cCableY = super.middenCable.getY(); 
        double dx = xpoint - cCableX;
        double dy = ypoint - cCableY;
        double cosangle = Math.cos(z);
        double sinangle = Math.sin(z);

        double x1 = cCableX + cosangle * dx - sinangle * dy;
        double y1 = cCableY + sinangle * dx - cosangle * dy;


        super.midden.setX(x1);
        super.midden.setY(y1);

任何人都知道它如何制作一个圆圈,而不是转换到我试图旋转的中心?

4

1 回答 1

0

您对中点的重新计算似乎有缺陷;假设z是三角角:

double curangle = Math.atan2(dx, dy);
double dist     = Math.sqrt(dx*dx + dy*dy);
double x1 = cCableX + dist * Math.cos(curangle+z);
double y1 = cCableY + dist * Math.sin(curangle+z);

这段代码是 poc。它很可能性能很差,并且没有检查数值稳定性。

于 2013-04-24T11:07:00.807 回答