java - 在java中旋转一个二维数组n度

标签 java math rotation

我正在制作一个二维物理引擎,每当生成一个对象(如椅子)时,它都会创建一个两倍于原始图像大小的二维 boolean 数组(以允许旋转)并创建一个与图片(不包括不透明度小于1的像素)

如何将这个数组旋转 x 度?

将真实值旋转 x 度,其中“this”可以是任何形状
f=假 t=真

f f f f f f f
f f f f f f f
f f T T T f f
f f T T T f f
f f T T T f f
f f f f f f f
f f f f f f f

最佳答案

这是一个基本的图像旋转算法,只不过您只是在旋转 T/F 位图,对吗?

来 self 的笔记:

http://www.leptonica.com/rotation.html

http://datagenetics.com/blog/august32013/index.html

剪切旋转:

卡特穆尔与史密斯

非常快;由 rasterops 实现。可以就地完成。

像素行移动的距离与其垂直方向成正比 离旋转中心的距离。三个交替的序列 H、V、H 剪刀执行旋转。对于小角度(< 3 度), 用两把剪刀就可以了

失真会累积;如果您要使用旋转图像 180 次旋转,每次旋转 12 度,结果将是有效的 加密。但是,“展开”图像会恢复它。

R = [  cos(a) sin(a) ]
    [ -sin(a) cos(a) ]


  = [ 1  tan(a/2) ] [    1     0 ] [ 1  tan(a/2) ]
    [ 0     1     ] [ -sin(a)  1 ] [ 0      1    ]

注意:首先以 90° 为步长旋转,使 a <= 45


我有一个类似算法的 C 代码,可以对图像进行任意旋转、缩放和平移,所有这些都使用整数数学运算,但它又大又长,可能不适合您的问题。

但坦率地说,我只是四处看看,看看是否已经有 Java 实现;寻找二维图形库。

关于java - 在java中旋转一个二维数组n度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875067/

相关文章:

java - 在 Java 中将函数应用于 while 循环

java - 如何将AWS SDK添加到OSGi环境

java - Eclipse 发生错误。请参阅日志文件 (Windows x64)

javascript - 如何旋转内部有点的矩形?

ios - iOS中图像的动量旋转

java - Android 附件通过 HTTPS 上传

java - 检查点是否在圆扇形内

c - 找到给定区间 [a,b) - C 中的所有 Carmichael 数

python - 如何以随机度数旋转 Torch 张量

python - Python 样条曲线(使用控制节点和端点)