Java 如何使矩形与圆相切
我试着让一个矩形物体绕着一个圆旋转,矩形总是与它所绕的圆相切。我有代码可以让它绕着圆转,但我不知道如何使它与圆相切。到目前为止,情况就是这样 我正在使用一个动画计时器,因为我不知道矩形将遵循的完整路径,因为如果我发现有东西阻挡它,它可能会改变。 我可以使矩形以平滑的方式围绕圆旋转,但我不知道如何使矩形与圆相切Java 如何使矩形与圆相切,java,javafx,Java,Javafx,我试着让一个矩形物体绕着一个圆旋转,矩形总是与它所绕的圆相切。我有代码可以让它绕着圆转,但我不知道如何使它与圆相切。到目前为止,情况就是这样 我正在使用一个动画计时器,因为我不知道矩形将遵循的完整路径,因为如果我发现有东西阻挡它,它可能会改变。 我可以使矩形以平滑的方式围绕圆旋转,但我不知道如何使矩形与圆相切 public void moveInCircle(double radius) { double newX = getX() + (radius * Math.cos(Mat
public void moveInCircle(double radius)
{
double newX = getX() + (radius * Math.cos(Math.toDegrees(angle)));
double newY = getY() + (radius * Math.sin(Math.toDegrees(angle)));
vehicle.setTranslateX(newX);
vehicle.setTranslateY(newY);
}
我知道切线将是相邻边(x)除以相对边(y),但我不知道如何合并它。我建议使用
旋转
变换。这样,您只需要设置初始位置和轴心点,并且可以限制对Rotate.angle
属性的更新
下面的示例使用时间线
来设置属性的动画,但这可以通过moveCircle
方法通过使用rotate.setAngle(angleDegrees)轻松完成代码>:
顺便说一句:你的代码下面的部分看起来很奇怪
double newX = getX() + (radius * Math.cos(Math.toDegrees(angle)));
double newY = getY() + (radius * Math.sin(Math.toDegrees(angle)));
Math.sin
和Math.cos
期望的是弧度,而不是度。你要么需要使用托拉迪安,要么不需要转换…你在代码的最后一部分是对的…奇怪的是,它可以工作。我需要做那个部分。我需要让车辆改变车道,我正在考虑让它旋转,直行,直到它位于下一条车道的中心,然后旋转,这样它就可以跟随它改变的新车道。时间轴似乎比使用动画计时器有更多的优势,因为我可以使用内置的方法,而不必使用我自己的旋转方法并遵循循环路径。
double newX = getX() + (radius * Math.cos(Math.toDegrees(angle)));
double newY = getY() + (radius * Math.sin(Math.toDegrees(angle)));