当前位置:  开发笔记 > 编程语言 > 正文

数学帮助 - 不能旋转某些东西(知道Java会是一个加分)

如何解决《数学帮助-不能旋转某些东西(知道Java会是一个加分)》经验,为你挑选了1个好方法。



1> coobird..:

由于Java通过值传递方法参数,因此在调用它的方法中将看不到方法中正在操作的值xy正在操作的值.rotate

因此,xy那些在正在改变值rotate的方法是一个本地副本,所以一旦超出范围(即从返回rotate的方法来调用它的方法),值xy消失.

所以目前正在发生的事情是:

x = 10;
y = 10;
o1 = new obj();
o1.a = 100;
rotate(x, y, obj);
System.out.println(x);  // Still prints 10
System.out.println(y);  // Still prints 10

从Java中的方法获取多个值的唯一方法是传递一个对象,并操纵传入的对象.(实际上,在进行方法调用时会传入对象引用的副本.)

例如,重新定义rotate以返回Point:

public Point rotate(int x, int y, double angle)
{
    // Do rotation.
    return new Point(newX, newY);
}

public void callingMethod()
{
    int x = 10;
    int y = 10;
    p = rotate(x, y, 45);
    System.out.println(x);  // Should print something other than 10.
    System.out.println(y);  // Should print something other than 10.
}

也就是说,正如皮埃尔所说,在我看来,使用AffineTransform会更容易.

例如,创建Rectangle对象并使用它旋转AffineTransform可以通过以下方式执行:

Rectangle rect = new Rectangle(0, 0, 10, 10);

AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(45));

Shape rotatedRect = at.createTransformedShape(rect);

AffineTransform可以应用于实现Shape接口的类.Shape可以在Shape接口的链接Java API规范中找到实现类的列表.

有关如何使用AffineTransform和Java 2D的更多信息:

Trail:2D图​​形

课程:Java2D中的高级主题

转换形状,文本和图像

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有