Java Vector2d 类中的旋转

发布于 2024-10-20 05:55:46 字数 687 浏览 1 评论 0原文

我已经为此工作了一个小时,但无法理解。

我有一个 Vector2d 类:

public class Vector2d
{
    public double x = 0.0;
    public double y = 0.0;

    ....
}

这个向量类有一个rotate() 方法,这给我带来了麻烦。

第一个片段似乎使 x 和 y 值越来越小。第二个效果很好!我在这里缺少一些简单的东西吗?

public void rotate(double n)
{
    this.x = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    this.y = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
}

这有效:

public void rotate(double n)
{
    double rx = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    double ry = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
    x = rx;
    y = ry;
}

我只是看不出有什么区别

I've been working on this for one hour, just can't get it.

I have a Vector2d class:

public class Vector2d
{
    public double x = 0.0;
    public double y = 0.0;

    ....
}

This vector class has a rotate() method which is causing me trouble.

The first snippet seems to make the x and y values smaller and smaller. The second one works just fine! Am I missing something simple here?

public void rotate(double n)
{
    this.x = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    this.y = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
}

This works:

public void rotate(double n)
{
    double rx = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    double ry = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
    x = rx;
    y = ry;
}

I just can't spot any difference there

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

第几種人 2024-10-27 05:55:46

第一行设置 this.x 的值,然后当您真正想要的是 this.x 的原始值时,在第二行中使用该值。第二个版本工作正常,因为您没有更改 this.x

The first line sets the value of this.x which is then used in the second line when what you really want is the original value of this.x. The second version works fine because you don't alter this.x.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文