문제

좋아, 그래서 나는 가능한 한 설명을하려고 노력할 것이다.

업로드 된 이미지의 Jibjab 스타일 마스킹 기능이 필요한 클라이언트를위한 프로젝트를 진행하고 있습니다.

Bezier 모양의 앵커/제어 위치가 포함 된 데이터베이스 저장 가능한 객체를 생성 할 수 있으므로 나중에 뽑아 객체를 다시 마스킹 할 수 있습니다. 이 모든 것은 하나의 캐치를 제외하고는 매우 쉽습니다. 사용자가 만든 개요에서 Bezier 객체를 만들어야합니다.

지금까지 프로세스가 진행되는 방법은 다음과 같습니다.

마우스 아래에서 새 스프라이트, 시작 필 및 Moveto 마우스 위치를 만듭니다.

마우스 이동에서 xy 좌표를 lineto.

마우스 위로 끝납니다.

이 모든 것이 잘 작동합니다. 나는 단지 정보를 여기에 보관할 수 있었지만, 쓸모없는 X/Y 좌표로 가득 찬 거대한 물체를보고있을 것이며, 모든 픽셀에 핸들을 넣는 것 외에 미세 조정 변경을 실제로 할 수있는 방법은 없습니다. (나는 최종 사용자에게 연필 도구를 줄 수도 있습니다 ...)

Bezier 곡선 계산이 진행되는 한 다음은 다음과 같습니다.

1 : 새 곡선을 시작 해야하는시기를 파악 하고이 간격에서 픽셀의 XY를 추적하십시오. 나는 이것이 단지 픽셀 카운트라고 상상하고있을 것입니다. 아마도 마우스 이동 당 카운트 변수를 증가시키고 x 픽셀마다 새 것을 만들 수 있습니다. 여기서의 문제는 일부 곡선이 부정확하고 다른 곡선은 불필요하지만 실제로는 정확한 표현이 아닌 일반적인 영역이 필요하므로 작동 할 수 있습니다. 나는 조금 더 똑똑한 무언가로 더 행복 할 것입니다.

2 : 각각의 새로운 X/Y를 가져 가서 앵커로 보관하고, 컨트롤이 어디로 갈 것인지 파악할 수있는 곳과 마지막 앵커 사이의 라인 곡선을 찾으십시오. 이것은 내가 정말로 매달린 곳입니다. 누군가가 플래시 로이 작업을 수행했다고 확신하지만, 검색하는 방법은 아무것도이 작업을 수행 할 수있는 방법으로 나를 도울 수없는 것 같습니다. 나는 많은 스케치와 뇌를 감싸 수있는 작은 수학을했지만 픽셀을 Beziers로 변환하는 방법을 알아낼 수는 없습니다.

이게 가능해? 내가 정말로 필요한 것은 같은 모양에 가까워 질 것입니다. 나는 다음 픽셀의 각도가 현재 선이나 무언가와 관련하여 180도를 넘어서 앵커를 배치 할 것이라고 생각하고 있으며, 이러한 변화 사이의 아크 가장자리를 잡는 것만으로도, 내가 아무리 노력하더라도 나는 이 일을하는 방법을 알아낼 수없는 것 같습니다!

도움을 주셔서 감사합니다. 여기에 진전을 게시 할 것입니다. 실제로 가능한 한 많은 응용 프로그램에서 정말 유용 할 수 있다고 생각합니다.

제시

도움이 되었습니까?

해결책 3

답변 해주셔서 감사합니다. 응용 프로그램에 대해 더 구체적으로해야한다고 생각하지만 마스크에 대한 개요 만 필요할 뿐이므로 이미지를 벡터 나 다각형으로 변환하는 것이 얼마나 멋진 지에도 불구하고 내 수정은 실제로 수정되지 않습니다. 문제. 선형 최소 제곱 알고리즘은 Mega Cool입니다. 이것이 내가 찾고있는 것에 더 가깝다고 생각합니다.

나는 지금 당장 기본 해결 방법을 가지고 있습니다. 마우스 움직임을 계산 한 다음 모든 X (가장 바람직한 곡선을 얻기 위해 연주) 이동, XY 위치를 잡습니다. 그런 다음 다른 모든 저장된 XY를 가져 와서 앵커로 바꾸면 나머지 XYS는 제어로 바뀝니다. 이것은 다소 바람직한 결과를 낳지 만 마스크가 그려지는 속도가 손잡이 수에 영향을 미치고 실제로 정확한 적합이 아닌 일반적인 영역을 얻는다는 점에서 약간의 문제가 있습니다. 흥미롭게도, 사용자는보다 정확한 모양으로 느리게 끌리는 것처럼 보이 므로이 솔루션은 내가 상상했던 것보다 훨씬 더 잘 작동하지만 가능하지는 않습니다. 이것은 클라이언트에게 효과가 있으므로 더 추구 할 이유가 없지만 새로운 것을 배우는 것을 좋아하고 시계에서 시간을 보내면서 선형 최소 방정식을 살펴보고 이러한 계산을 수행 할 수있는 클래스를 강화할 수 있는지 확인합니다. 나를 위한. 누군가가 이런 유형의 물건에 대한 일부 AS3 코드를 가로 질러 실행되거나 내 일부를 원한다면 저에게 알려주십시오. 이것은 흥미로운 퍼즐입니다.

다른 팁

픽셀을 Bezier 곡선으로 바꾸는 것은 많은 작업처럼 들립니다. 선형 최소 제곱 알고리즘과 같은 것을 사용해 볼 수 있습니다. http://en.wikipedia.org/wiki/linear_least_squares

다른 전술, 사용자가 대신 벡터 그래픽을 그리도록 할 수 있습니까? 그렇게하면 모양을 데이터베이스에 저장할 수 있습니다.

래스터를 벡터로 변환하는 또 다른 멋진 방법은이 반복 프로그램과 같은 것입니다. http://rogeralsing.com/2008/12/07/genetic-programming-evolution of-mona-lisa/

행운을 빕니다

내 대답에 이 질문 나는 사용에 대해 논의한다 오토 트레이스 비트 맵을 Beziers로 변환합니다. 서버 에서이 프로그램을 통해 사용자 그리기를 전달하는 것이 좋습니다. Autotrace는 환상적인 추적 및 단순화 작업을 수행하므로 여기에서 바퀴를 시도하고 재창조 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top