1

(私は同じ質問を理論的コンピューター サイエンス フォーラムに投稿しましたが、理論的というよりも実際的なものであるため、多くの注目を集めるとは思えません)

サンプルラインを指定して、手で描いたかのようにラインを生成できるアルゴリズムを探しています。

つまり、人間がトレーシング ペーパーで元の図面をトレースした場合に行うように、何度も再作成する必要がある線 (図面) があります。

当然のことながら、人間は図面をオリジナルにかなり近づけてトレースしますが、わずかなエラーがあります。そのため、結果が人によって作成されたトレースされたオリジナルのように見えるように、図面を歪めるアルゴリズムが存在するかどうか疑問に思っています。

これは、描画をアニメーション化するプログラム用です。

4

2 に答える 2

2

うーん。それは興味深い問題です。リアルなパーリン ノイズがどのように見えるかはわかりませんが、

しかし、ここでは、ノイズのブラウン運動タイプを含めたテスト ケース(たとえば、特定のポイントの直線からの摂動 = 以前の摂動の合計 + ゼロ中心と特定のシグマを持つガウス乱数の場合:

ぐらつきの程度が違う

画像は、シグマの関数として図面を左から右に示しています (左から右に減少)。

コードは次のとおりです。

import numpy as np, numpy.random
import matplotlib.pyplot as plt
np.random.seed(1)
N = 1000
xs = np.arange(N)
thi =  6
sig =  0.00045
def getrand():
        return np.cumsum(np.random.normal(0, sig, size=len(xs)))
        # returns the cumulative sum of the set of random 
        # normally distributed numbers
plt.figure(1)
plt.plot(xs, getrand() * N, linewidth=thi, color='black')
plt.plot(xs, N + getrand() * N, linewidth=thi, color='black')
plt.plot(N + getrand() * N, xs, linewidth=thi, color='black')
plt.plot(getrand() * N, xs, linewidth=thi, color='black')
于 2012-09-17T18:15:52.433 に答える
1

1 つのアプローチは、パーリン ノイズを使用することです。ここの回答で役立つリンクを見つけることができます: Perlin Noise for 1D?

于 2012-09-17T15:24:53.300 に答える