Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java仿射翻译-Can';t将平移X/Y重置为0_Java_Awt_Affinetransform - Fatal编程技术网

Java仿射翻译-Can';t将平移X/Y重置为0

Java仿射翻译-Can';t将平移X/Y重置为0,java,awt,affinetransform,Java,Awt,Affinetransform,我正在做一个程序,在这个程序中,我同时围绕一个锚定点进行缩放和旋转。我通过以下方式做到这一点: 平移,使原点位于锚点 缩放/旋转 翻译回原来的位置 但是,我似乎无法将原点放回(0,0)。这是我的密码: System.out.println(currentTransform.getTranslateX() + ", " + currentTransform.getTranslateY()); currentTransform.translate(an

我正在做一个程序,在这个程序中,我同时围绕一个锚定点进行缩放和旋转。我通过以下方式做到这一点:

  • 平移,使原点位于锚点
  • 缩放/旋转
  • 翻译回原来的位置
  • 但是,我似乎无法将原点放回(0,0)。这是我的密码:

                System.out.println(currentTransform.getTranslateX() + ", " + currentTransform.getTranslateY());
                currentTransform.translate(anchorPoint.x, anchorPoint.y);
                currentTransform.rotate(Math.toRadians(-deltaAngle));
                currentTransform.scale(scaleFactor, scaleFactor);
                System.out.println(currentTransform.getTranslateX() + ", " + currentTransform.getTranslateY());
                currentTransform.translate(-anchorPoint.x, -anchorPoint.y);
                System.out.println(currentTransform.getTranslateX() + ", " + currentTransform.getTranslateY());
    
    我第一次运行此代码时,输出如下:

    0.0,0.0

    109.0,85.0

    0.2508035970521405,-1.415126056974529

    任何后续运行在开始时都会显示相同的剩余平移

    我需要做什么才能将翻译返回到0

    编辑:


    即使我替换了行
    currentTransform.translate(-currentTransform.getTranslateX(),-currentTransform.getTranslateY())
    代替
    currentTransform.translate(-anchorPoint.x,-anchorPoint.y)

    基本上,您正在转换一个缩放的变换,因此您给出的坐标会在转换时开始缩放…即使我替换行
    currentTransform.translate(-currentTransform.getTranslate(),-currentTransform.getTranslateY()),问题仍然会发生
    代替
    currentTransform.translate(-anchorPoint.x,-anchorPoint.y)