问题标签 [affinetransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2527 浏览

java - Java-AffineTransform API:将图像缩放到最大 300*100 像素?

我知道做简单的缩放,但是如何将图像缩放到最大 300*100 像素?我搜索了 AffineTransform API 类,但找不到此方法。

提前谢谢

0 投票
5 回答
16392 浏览

java - 仿射变换如何在 Java 中真正起作用?

我一直在我的java项目中使用仿射变换来旋转一个字符串,我还不是一个有经验的程序员,所以我花了很长时间来完成一个看似很小的任务..旋转一个字符串。

现在我终于让它或多或少地像我希望的那样工作,除了它没有像我想要的那样精确......但是。

由于需要大量的试验和错误并阅读仿射变换的描述,我仍然不太确定它的真正作用。我想我现在知道的是,我拿了一个字符串,并定义了字符串的中心(或我想要旋转的点),但是矩阵在哪里出现呢?(貌似我不知道呵呵)

任何人都可以尝试向我解释仿射变换是如何工作的,换句话说,不是java doc吗?也许它可以帮助我调整我的实现,而且,我真的很想知道:)

提前致谢。

0 投票
2 回答
3079 浏览

java - 什么是仿射变换?

我正在阅读“Beginning Java Game Programming 2/e”,这本书非常强调使用 AffineTransform。

只有一个问题,它根本没有解释它是什么,它做了什么,以及 AffineTransform 的目的。

我做了一些谷歌搜索,但他们只是向我展示了矩阵数学......有人能指出我正确的方向吗?

0 投票
1 回答
424 浏览

iphone - 自动旋转会扭曲 iPhone 中的旋转视图

我使用基于视图的模板来创建我的应用程序,并在 shouldAutorotateToInterfaceOrientation 中返回 YES 以支持自动旋转。接下来,我添加一个方形 testView_ 对象(具有默认的自动调整大小设置),并在初始化时旋转它:

现在,每当我旋转 iPhone 时,testView_ 都会变形。是什么原因,如何纠正?每次旋转 iPhone 后 testView_ 的宽度和高度都会发生变化,即使它不应该被自动调整大小(只有在 testView_ 最初旋转时才会发生这种情况)。

0 投票
2 回答
4317 浏览

2d - 组合多个仿射变换的方法,就好像每个都在未变换的空间中指定一样

我正在寻找一种以这种方式组合仿射变换的方法,以便效果等同于使用每个变换来连续操纵形状。问题是如果我简单地连接变换,那么每个连续变换的效果都会在现有变换的坐标空间中解释。

例如,考虑原点周围的正方形(-50、-50、100,100)。我想旋转它,然后将它向下平移 100 像素。如果我进行变换并旋转然后平移,则平移将在旋转坐标中进行解释。相反,如果我变换形状本身以旋转它,然后再次变换该形状以翻译它,则两种翻译都在“正常”未翻译平面中解释,它给了我我想要的东西。

问题是,对于我正在做的事情,可能会发生许多变换,每个变换都需要在法线坐标平面中进行解释,但我不想存储一堆变换,也不能简单地继续操纵形状,因为我需要随时能够从原始起始形状创建最终的转换形状。

示例:左侧的普通连接,右侧的连续变换

我知道,对于这个简单的示例,如果我在旋转之前进行翻译,我会得到相同的结果,但这没有抓住重点。我正在处理一组任意的连续缩放、平移和旋转变换,因此简单地将它们按特定顺序放置并不会减少它。

我有一种暗示,应该有一种方法来连接变换,以便在连接之前修改新变换,纠正现有变换,以便效果是新变换似乎已被应用,就好像它参考未转换的坐标平面。例如,如果您在上面的示例中转换为 (70.7, 70.7) 而不是 (0,100),则结果将变得等价。我只是似乎无法弄清楚数学是什么,通常要弄清楚如何改变新的变换,使其正常工作。

感谢阅读 - 希望这是有道理的。下面是创建屏幕截图的示例的来源:

(我正在使用 Java2D,尽管我认为语言或 2d 库在这里并不是那么相关。)

0 投票
2 回答
2135 浏览

math - 光线追踪中的 3D 仿射变换问题

全部,

我正在编写一个相当非传统的光线追踪器来计算场景中各种物体的传热特性。在这个光线追踪器中,随机光线从我的原始对象的表面射入场景以检查交叉点。

这种特定的算法要求每条射线在原始空间中进行开发,然后由源对象仿射变换到世界空间,然后仿射变换回场景中其他对象的原始空间以检查相交。

一切都很好,直到我做了一个各向异性比例,例如按 [2 2 1] 缩放一个对象(各向同性比例很好)。这让我相信我没有正确地转换光线的方向分量。目前,我通过将方向分量乘以源对象逆变换矩阵的转置将光线方向从原始空间转换到世界空间,然后通过乘以目标对象变换的转置,将光线从世界空间转换到每个原始空间矩阵。

我还尝试乘以源图元的变换矩阵以从原始空间到世界空间,并乘以目标逆变换以从世界空间到原始空间,但这不成功。

我相信从原始物体表面(在随机点和随机方向)发射的光线应该以与“常规”光线追踪中的表面法线相同的方式进行转换,但我不确定。

那里的任何专家都知道我的方法中的缺陷是什么?随时询问是否需要更多信息。


该光线追踪器的基本算法如下:

希望能澄清这个问题,让我们看一个例子。假设我有一个沿 z 轴(单位半径和高度)延伸的圆柱体和一个位于 xy 平面内的环形空间,内径为 7,外径为 8。我希望在 x 和 y 中将圆柱体缩放 6 倍方向(但不是z方向)所以我的仿射变换矩阵如下:

现在假设我有一条射线,它在圆柱体 s 的表面上具有一个随机起点,并且在远离圆柱体 c 表面的一个随机方向上给出射线 r(os) = s + ct。

我想将此射线从原始(对象)空间转换为世界空间,然后测试与场景中的其他对象(环)的相交。

第一个问题是使用 M(圆柱体)或 M^-1(圆柱体)将射线 r(os) 转换到世界空间 r(ws) 的正确方法是什么。

第二个问题是使用 M(annulus) 和 M^-1(annulus) 将光线 r(ws) 从世界空间转换到对象空间以检查与其他对象相交的正确方法是什么。


一些额外的背景信息:

此应用程序用于计算 N 个对象之间的辐射传热。射线从物体上的随机点发射,其方向被随机选择以位于以随机点处的表面法线定向的半球形分布内。


这是我的问题的一些可视化。首次生成时的光线方向分布: 初始光线方向分布

如果我使用变换矩阵 M 将变换应用于世界坐标: M变换的方向

如果我使用逆变换矩阵 M^-1 将变换应用于世界坐标 由 M^-1 变换的方向

0 投票
2 回答
1189 浏览

java - AffineTransform mouse aiming rotation stutter on 90 degrees

EDIT: OH!!!!! it works!!! It seems that at one point it was fixed However the wrong HTML file was opening up so the wrong code was running. I feel stupid, that should have been obvious.

But THANKYOU!!!

Its so awesome to actually get some help with this stuff. whenever i ask for some help anywhere else or even ask my teacher im usually ignored or get useless advice. (end of edit)

Im making a game for my final project in a java class. I just got mouse aiming to work using AffineTransform, however When ever the player object rotates to 90 degrees(or a multiple of it), it does this weird stutter thing. Heres the code im specifically concerned with.

Could someone please help me figure out how to fix this? my project is due tomorrow so im slim on time. Here are the images i use

http://i56.tinypic.com/iolys3_th.png http://i53.tinypic.com/27hif_th.png http://i56.tinypic.com/21jayoh.jpg

Heres the code.

0 投票
2 回答
303 浏览

java - 旋转图像会导致损坏

我正在尝试将图像左右旋转 90 度。

但是由于某种原因,此过程的输出会导致损坏。

这是我的代码:(
它很时髦,但假装它的 java 并不需要太多想象力)

原来的: 在此处输入图像描述

旋转:在此处输入图像描述

0 投票
1 回答
142 浏览

java - 如何在 Java 中获得缩放形状的新高度

我正在为特定点缩放形状,如下所示:

当我尝试使用 获得新高度时shape.getHeight(),我得到了初始高度

0 投票
1 回答
1976 浏览

c# - 使用 cvTransform 和 cvGetAffineTransform openCv 调整矩形大小

我正在处理多尺度图像,3 种尺寸:原始、一半和双倍我分别从它们中提取连接的分量,然后进行一些计算

最后我想将半比例和双比例连接组件的边界矩形映射到它们在原始图像中的原始位置和大小

这是我调整和重新定位边界矩形的代码

它应该让 dst 点重新调整和重新定位,但不幸的是再次返回相同的点,我认为 getAffineTransform 存在问题,因为它返回一个单位矩阵

有什么建议么 ??还是有另一种方法可以在不使用仿射变换的情况下做我想做的事

提前致谢