3

我有兴趣创建包含重复图案的海报大小的图像,类似于下面的两个(公共领域)图像,生命之花彭罗斯平铺

我的问题:

  1. 人们通常如何在计算机上创建这样的图像?我希望答案不是“打开 Adob​​e Illustrator 并猜测交叉点”,因为这些点可以用数学方法定义。但我也想象不是每个对几何图案感兴趣的人都熟悉编程。
  2. 创建此类图像的最佳环境是什么?特别是,从 Java、Python、Processing 等中获取高分辨率图像的最佳方法是什么?或者,Mathematica 是最好的工具吗?

在我看来,实际上计算分数和做数学并不是困难的部分(至少,这不是这个问题的重点)。我对从程序中获得高质量视觉产品的最佳方式感兴趣。

4

7 回答 7

5

创建此类图像的最佳方法是学习编写 PostScript。这是一门干净的语言,易于学习,而且一旦你熟悉它就非常强大。

迄今为止, Bill Casselman 的手册是高质量数学插图的最佳参考。

于 2009-12-03T16:55:22.887 回答
1

使用像SVG这样的矢量图像格式。这将完美地扩展到任何分辨率。

Inkscape是创建这些的绝佳工具。

一旦你有了矢量图像格式,就可以在编程语言中使用许多选项,具体取决于你选择的语言。

例如 -

于 2009-12-03T16:33:53.037 回答
1

好吧,#2 将是一场圣战,所以我将讨论#1。:)

这种性质的图像的关键是递归。基本上它们是相同的图像,以受控的方式一遍又一遍地重复以获得有趣的结果。以生命之花为例。你重复中心花瓣六次(做花瓣的方法取决于你)。然后,您使用花瓣尖端作为中心并重叠其中一个花瓣再创建六朵花。然后你递归地向外移动。在几个“回合”之后,你停下来画出包含的圆圈。基本上,recusion 模拟了手动操作时所需的戳记、移动和旋转。

当我玩弄这些类型的东西时,我总是发现实验是获得很酷的新东西的最佳方式。当然,这可能只是我缺乏想象力。:)

我知道我对这个答案的数学不是很重,但这取决于你和实验。请记住,COS 和 SIN 是您的朋友,并且在 cricle 中有 360 度(或 2pi 弧度,具体取决于您的数学包)。

编辑:为“花”添加一些数学

从 (Xo, Yo) 的中心和 r 的花半径开始...

花瓣的尖端(P0、P1 等)由...确定

X = Xo + (sin((n * pi)/3 + (pi / 6)) * r)
Y = Yo - (cos((n * pi)/3 + (pi / 6)) * r)

其中 n 是花瓣数 (0..5)

一旦计算出花瓣尖端,只需绘制花瓣,然后在尖端开始一朵新花。您还将设置一个边界圆,以便不会绘制该圆之外的任何点。

于 2009-12-03T16:42:16.517 回答
1

我不知道这些图像是如何创建的,我猜它们是从一本书中扫描出来的,但是,在我使用分形的工作中,我倾向于从使用<canvas>标签开始,主要是这样我可以更改元素的大小并看到它绘制了更多的迭代,所以我可以获得最高分辨率。

这就是像 SVG 这样的问题,你需要选择一个分辨率然后创建它,它可以很好地上下缩放,但是如果你以一种分辨率开发它,那么你会转到更高的分辨率来演示,您可能会看到比您想要的更多的差距。

如果您只想这样做并将其保存为静态图像,那么任何 GUI 都可以工作,因为此时您正在保存 GIF,但如果您想要它,例如,在网页上,让它看起来一样好因为它可以在那个浏览器上,那么你可能想看看使用 javascript。

数学部分并不难,因此绘制图像相当容易,只要您导出所需的递归算法。我倾向于进行下一次迭代,直到大小低于阈值,例如半径<3,然后退出。

于 2009-12-03T16:56:15.973 回答
0

我会尝试用 Java 中的 iText 创建 PDF。PDF 支持矢量图形,因此它应该可以毫无问题地缩放。当您拥有大量图形元素时,我不知道 iText 对性能的扩展程度如何。

于 2009-12-03T16:48:26.800 回答
0

A1。您可能想查看海龟图形、l 系统、迭代函数系统、空间填充曲线,以及许多我不熟悉或尚未想到的其他方法。

A2。您可以使用您建议的任何语言对其中任何一个进行编程。我喜欢 Mathematica,但我知道不是每个人都有它的副本,而我有一个副本,因为我从事数字运算,并开始使用它来制作漂亮的图片。但是 Processing 是免费的,它被设计为对艺术家友好,对你来说可能是一个更好的起点。Mathematica 和 Processing 都在此完成图形处理,无需调用外部库(或担心使用哪些库)。

而且,虽然我同意每个人所说的矢量是要走的路,但不要忘记最终的制作步骤,在纸上或屏幕上,正在渲染,所以请考虑一下如何完成。例如,这可能会引导您使用 Postscript 或 PDF 作为输出格式。

玩得开心

标记

于 2009-12-03T16:51:18.603 回答
0

嗯,我曾经用指南针画生命之花,那时在初中......实际上很简单......但我认为这不是你要寻找的答案。

基本上它包括从每个点绘制一个半径相同的圆,直到遇到大圆(极限)。

于 2009-12-03T16:55:28.300 回答