我一直在网上寻找如何将规则形状变形为不规则形状的网络。到目前为止,我只找到了有关使事物沿着弯曲的路径或类似的方式的资源。
我希望做一个完整的形状转换。有效地将常规矩形转变为不规则形状。我的理想目标是将其用于简单的2D布料模拟动画。
网上是否有任何我无法找到的资源?或者你们中的任何人都知道如何创建一种算法来处理这种变形。
我最初的猜测是逐轴变形我的形状,但我担心这可能会导致很多失真。有什么想法吗?
答案 0 :(得分:0)
是的,您可以通过将图像分解为矩形(然后将每个矩形分成两个三角形)然后在将graphics.drawImage(..)
设置为图形后使用AffineTransform
(这是一个不同的变换)来实现对于每个三角形)。
我已经在这个小程序中完成了它:http://nik-sergeev.com/trees.html
(如果单击现在出现的有关Java小程序的各种警告),那么当您单击小程序中的页面或书签时,您将看到的是“翻页”效果,如上所述。 (这是一个应该看起来像书的小程序。)
任何本地仿射的映射都可以通过这种方式实现。 (这是你最关心的那些。)
要找到为每个三角形定义AffineTransform
的六个参数,您必须对每个三角形的三个角进行光线跟踪。 (如果你不熟悉“光线跟踪”,它比声音更容易。你只需要指定点映射的位置和映射到的位置。)然后使用一些基本数学求解仿射变换参数。 / p>