- 답변 # 1
- 답변 # 2
참고로
Any quadratic spline can be expressed as a cubic (where the cubic term is zero). The end points of the cubic will be the same as the quadratic's.
CP0= QP0
CP3= QP2The two control points for the cubic are:
CP1= QP0+ 2/3 *(QP1-QP0)
CP2= QP2+ 2/3 *(QP1-QP2)...There is a slight error introduced due to rounding, but it is unlikely to be noticeable.
addQuadCurve
extension NSBezierPath { public func addQuadCurve(to qp2: CGPoint, controlPoint qp1: CGPoint) { let qp0 = self.currentPoint self.curve(to: qp2, controlPoint1: qp0 + (2.0/3.0)*(qp1 - qp0), controlPoint2: qp2 + (2.0/3.0)*(qp1 - qp2)) } } extension CGPoint { // Vector math public static func +(left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x + right.x, y: left.y + right.y) } public static func -(left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x - right.x, y: left.y - right.y) } public static func *(left: CGFloat, right: CGPoint) -> CGPoint { return CGPoint(x: left * right.x, y: left * right.y) } }
관련 질문
- python : 버블 정렬을 사용하여 상자별로 공 정렬
- c++ : SRT 스케줄링 알고리즘
- c++ : CMake 구성 단계에서 누락 된 시스템 수준 포함 파일이 거의 없지만 여전히 빌드 구성 파일을 생성하고 프로젝트를 빌드 및 실행할 수 있습니다.
- c++ : gdb 세션을 외부에서 분리하려면 어떻게해야합니까?
- c++ : Clang /LLVM의 특정 레지스터를 사용하여 전역 변수 강제 적용
- c++ : C에서 *와 &의 차이점은 무엇입니까?
- c++ : [속도] 한 번에 표준 편차와 평균을 계산하는 옵션
- c : 정렬 된 순서로 난수 생성
- c++ : 문자열 비교 중 가비지 값 처리
- c++ : QT Creator가 디버거의 stdin에서 읽을 수 없습니다.
http://fontforge.sourceforge.net/bezier.html에서 :
와이즈 비즈