2013-05-18 188 views
5

编程方式画一个完美的圆是不是所有的困难。它基于一些非常简单的数学,毕竟。输入两个参数(中心和半径)并输出圆。绘制一个不完美的圆圈

但是,如果您没有工具来帮助您,绘制一个自由形式的圆圈(如在手中握笔)非常困难!如果我想模拟一个试图绘制圆的人,是否有任何算法可以使用三个参数(中心,半径和“错误因子”),并使用第三个值的大小来创建随机缺陷在这个圈子里,虽然仍然在制造一些看起来像一个试图画出圆圈的人的东西?

+2

以下是一种方法 - http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs - 您可以根据自己的目的调整或采用。如果你足够努力,我想你会发现其他语言的实现。 –

+0

http://codepen.io/dcdev/pen/upjDy – davidcondrey

回答

1

将圆画成一系列“向内”和“向外”的圆弧,重新计算每个段所需的正确中心,以将圆弧的端点保持在实际圆周的一定距离内。

1

自由手划出的圆圈是随机但仍看起来连续。向半径添加噪音可能会导致看起来不切实际的跳跃。

一个稍微的改变可以在一定程度解决这个问题。使用马尔可夫矩阵,将噪音分成N水平,并且只有三个对角线条目。这将导致随机性,但它只能转换到prev/next层次。让它看起来连续。