gpt4 book ai didi

java - 变换形状

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:52 25 4
gpt4 key购买 nike

我有两个点想以特定方式连接起来 - 请参见第一张图片。我知道所有四个点的坐标。然后我需要将整个形状移动到坐标 [0, 0] 并旋转它,所以主要的两个点都在 x 轴上(见第二张图片)。接下来,我需要“挤压”x 轴上的形状,以便最后一个点的坐标为 [0, 1](参见最后一张图片)。

problem illustration

我的问题是 - 如何在 Java 中有效地计算中间两点的坐标而无需进行手动分析数学?

最佳答案

java.awt.geom.AffineTransform可能是一个起点。

这个程序应用了 3 个转换(以相反的顺序):

import java.awt.geom.AffineTransform;

public class TransRotScal {

public static void main( String[] args ) {
double theta = Math.atan2( -15.0, 40.0 );
AffineTransform trans = new AffineTransform(); // Identity
trans.scale( 1/43.0, 1.0 );
trans.rotate( theta );
trans.translate( -10, -20 );
double[] in = {
10, 20,
10, 30,
50, 30,
50, 35
};
double[] out = new double[in.length];
trans.transform( in, 0, out, 0, in.length/2 );
for( int ptNdx = 0; ptNdx < out.length; ptNdx += 2 ) {
System.out.printf( "{%7.4f, %7.4f }\n", out[ptNdx], out[ptNdx+1]);
}
}
}

输出:

{ 0,0000,  0,0000 }
{ 0,0817, 9,3633 }
{ 0,9527, -4,6816 }
{ 0,9935, 0,0000 }

为了给出这个答案,我写了一个小程序,但我想要一个更简单的程序,为此我已经发布了这个问题:Affine transforms for graph, not for text and labels .

关于java - 变换形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com