CoreGraphics를 사용하여 2 차 베 지어를 그리지 만 커브의 최소/최대 값을 컴퓨터에 입력하려고합니다. 나는 수학적인 배경이 아니기 때문에 이것은 약간 번잡하게되었다. 누구든지이 문제를 해결하는 방법에 대한 기사 나 아이디어가 있습니까?CoreGraphics를 사용하여 2 차 베 지어의 최소/최대 값 찾기
5
A
답변
3
이차 베 지어를 들어, 이것은 실제로 매우 간단합니다.
세 개의 제어점을 P0 = (x0,y0)
, P1 = (x1,y1)
및 P2 = (x2,y2)
으로 정의하십시오.
t = (x0 - x1)/(x0 - 2*x1 + x2)
이 0 <= t <= 1
경우, t
에 당신의 곡선을 평가하고 Px
로 위치를 저장 : x
에서 극값을 찾으려면,이 방정식을 해결한다.
t = (y0 - y1)/(y0 - 2*y1 + y2)
다시 0 <= t <= 1
경우, t
에서 당신의 곡선을 평가하고 Py
로 위치를 저장 : y
에 대해 같은 일을 할. 마지막으로 P0
, P2
, Px
(발견되는 경우) 및 Py
(발견되는 경우)을 포함하는 축 정렬 경계 상자를 찾습니다. 이 경계 상자는 2D 2 차 베 지어 곡선을 단단히 묶을 것입니다.
2
미적분은 연속적이고 차별화 가능한 커브의 최소/최대를 찾는 표준 트릭 상자를 제공합니다. 여기
은 샘플 토론입니다 :http://newsgroups.derkeiler.com/Archive/Comp/comp.graphics.algorithms/2005-07/msg00334.html
1
I 자바 스크립트이 표현을 만들었다 :
function P(x,y){this.x = x;this.y = y; }
function pointOnCurve(P1,P2,P3,t){
if(t<=0 || 1<=t || isNaN(t))return false;
var c1 = new P(P1.x+(P2.x-P1.x)*t,P1.y+(P2.y-P1.y)*t);
var c2 = new P(P2.x+(P3.x-P2.x)*t,P2.y+(P3.y-P2.y)*t);
return new P(c1.x+(c2.x-c1.x)*t,c1.y+(c2.y-c1.y)*t);
}
function getQCurveBounds(ax, ay, bx, by, cx, cy){
var P1 = new P(ax,ay);
var P2 = new P(bx,by);
var P3 = new P(cx,cy);
var tx = (P1.x - P2.x)/(P1.x - 2*P2.x + P3.x);
var ty = (P1.y - P2.y)/(P1.y - 2*P2.y + P3.y);
var Ex = pointOnCurve(P1,P2,P3,tx);
var xMin = Ex?Math.min(P1.x,P3.x,Ex.x):Math.min(P1.x,P3.x);
var xMax = Ex?Math.max(P1.x,P3.x,Ex.x):Math.max(P1.x,P3.x);
var Ey = pointOnCurve(P1,P2,P3,ty);
var yMin = Ey?Math.min(P1.y,P3.y,Ey.y):Math.min(P1.y,P3.y);
var yMax = Ey?Math.max(P1.y,P3.y,Ey.y):Math.max(P1.y,P3.y);
return {x:xMin, y:yMin, width:xMax-xMin, height:yMax-yMin};
}
관련 문제
- 1. 2 차 베 지어 보간
- 2. 2 차 베 지어 곡선 : 접선 계산
- 3. 2 차 베 지어 곡선에 가장 적합한 제어점을 찾는 방법?
- 4. 2 차 베 지어 곡선의 가장 가까운 점
- 5. 2 차 방정식 2 차 프로그래밍 R
- 6. GetPath()가 3 차 또는 2 차 베 지어 제어점을 반환합니까?
- 7. 3 차 베 지어 패스 단순화 하시겠습니까?
- 8. CPLEX 2 차 단순?
- 9. Scheme 코드를 사용하여 2 차 방정식을 푸십시오?
- 10. CoreGraphics를 사용하여 그림자를 수동으로 그립니까?
- 11. has_many : through 2 차 다형성
- 12. 베 지어 AABB 계산
- 13. 3 차 ODE와 선 사이의 교차점 찾기?
- 14. Regex를 사용하여 파일에서 값 찾기
- 15. 캔버스에서 베 지어 곡선의 높이 찾기
- 16. 확장 된 베 지어 라이브러리 또는 베 지어 작업 알고리즘
- 17. NHibernate : 2 차 레벨 캐시 만기
- 18. Python : 2 차 프로그래밍에 CVXOPT 사용
- 19. 2 차 정렬에 적합한 키 클래스는 무엇입니까?
- 20. 배열 값 사이의 값 찾기
- 21. 최대 절전 모드 2 차 캐시
- 22. CoreGraphics를 사용하여 rect를 알파 색상으로 채우려면 어떻게해야합니까?
- 23. coregraphics를 사용하여 핀치, 소용돌이, 신축성, uiimage 방법?
- 24. CoreGraphics를 사용하여 iPhone에서 방사형 데이터를 그립니다.
- 25. iPhone : coregraphics를 사용하여 무작위로 움직이는 거품 애니메이션?
- 26. CUDA에서 최대 값 찾기
- 27. 수동으로 NHibernate 2 차 레벨 캐시를 무효화하십시오.
- 28. C#의 2 차 프로그래밍/.NET
- 29. NHibernate 2 차 레벨 캐시를 지우는 방법
- 30. 컬렉션의 NHibernate 2 차 레벨 캐싱
P1 '= (X2, Y2)'시작 바로 오타가 있습니까? – kangax
감사합니다. kangax. 오타가 수정되었습니다. – Naaff