>

2 차 베 지어 (3 점)를 3 차 (4 점)로 변환하는 알고리즘은 무엇입니까?


  • 답변 # 1

    http://fontforge.sourceforge.net/bezier.html에서 :

    와이즈 비즈

  • 답변 # 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= QP2

    The 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.

    를 구현했습니다.  위의 Owen의 답변을 기반으로 한 NSBezierPath (macOS Swift 4)의 경우

    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) } }

  • 이전 linux - NVidia GPU를 사용한 온 스크린 EGL 디스플레이
  • 다음 java - 다음 30 일 이내에 만료되는 레코드를 선택하십시오SQL 문