2012-09-17 8 views
1

(I 이론적 컴퓨터 과학 포럼에서 같은 질문을 게시하지만 난 그게 더 실용적인보다는 이론적 있기 때문에 많은 관심을 얻을 것이다 의심) 내가 그 것 알고리즘을 찾고모선 왜곡

샘플 라인이 주어지면 마치 손으로 그린 ​​것처럼 선을 생성 할 수있게 해줍니다.

다른 말로하면, 사람이 추적 용지에 원본 그림을 따라 가면 인간처럼 여러 번 다시 만들어야하는 선이 있습니다 (그림).

당연히 인간은 원래 그림과 거의 비슷하지만 사소한 오류가있을 수 있습니다. 그래서 결과가 사람이 만든 추적 된 원본처럼 보이도록 그림을 왜곡시키는 알고리즘이 있는지 궁금합니다.

이것은 도면을 움직이는 프로그램을위한 것입니다.

답변

2

흠. 그것은 흥미로운 문제입니다. 나는 펄린 노이즈의 모습을 어떻게 현실적인

그러나 여기에서 나는 소음의 brownian motion 유형 (예 : 를 포함 한 테스트 케이스를 모를 때 주어진 점의 직선에서 섭동 = 이전 섭동의 합 + 제로 센터 가우스 난수 특정 시그마 : 이미지 왼쪽에서 도시

different degree of wobbliness

시그마의 함수로서 도면을 바로 잡을 여기

가있다 (왼쪽에서 오른쪽으로 감소) 코드 :

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') 
+0

당신이 사용한 해상도, sigmas가 무엇인지, 플롯 포인트 간의 거리가 더 상세 할 수 있습니까? –

+0

@sega_sai, 감사합니다. 나는이 용어를 간신히 이해한다. 이전 댓글뿐 아니라 이게 무엇인지 배울 수있는 자원을 가르쳐주세요. – akonsu

+0

숫자를 생성하는 데 사용한 파이썬 코드를 추가했습니다. –

1

한 가지 방법은 Perlin Noise를 사용하는 것입니다. 아래의 답변에서 유용한 링크를 찾을 수 있습니다 : Perlin Noise for 1D?