2011-04-14 1 views
0

내가 바로 플래시 GUI에서 만 큐빅 베 지어 곡선을 그릴 수 있다는 생각에, 그리고 액션 스크립트에서 당신은 이차 베 지어 곡선을 그릴 수 있습니까? 정말?베 지어 곡선

이 잘 .. 내가 어떤 점 좌표를 해결하기 위해 응용 프로그램을 그리기 이차 베 지어를 작성했다 경우는 .. 그것은 미친 것 질수 있는지 메신저 보인다.

+0

당신이 얻은 답에 덧붙여, 당신이 actionscript에서 좀더 베 지어 진 수학에 관심이 있다면 구식이긴하지만이 기사는 꽤 좋습니다 : http://www.timotheegroleau.com/Flash/articles/cubic_bezier_in_flash. htm –

+0

고마워, 내가해야 할 것 같아. 만약 내가 방금 사각형이 그리기 수있는 그래픽 애플 리케이션 (그래서 내가 곡선의 모양과 제어 지점 위치를 디자인 할 수 있었다) 나는하지 않아도됩니다. – hooleyhoop

+0

커브를 구현하는 방법은 사용자와 사용자의 요구 사항에 달려 있습니다. 당신은 이차원, 입방체 (@ divillysausages의 편리한 리소스를 사용하여) 또는 다른 곡선 (hermite, cardinal 등)을 그릴 수 있습니다. http://algorithmist.wordpress.com/tag/hermite-curve/ ... Degrafa 또한 http://degrafa.org/ –

답변

4

드로잉 API를 사용하는 경우 curveTo() 함수를 사용하여 2 차 베 지어 곡선 만 그릴 수 있습니다. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#curveTo()

올바른 베 지어 곡선의 경우 그리 어렵지 않지만 직접 처리해야합니다. 내가 찾은 소스 코드와 함께 빠른 링크 : 플래시 플레이어 11에서 실제로 http://www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript-3/

http://www.farmcode.org/post/2009/07/06/Fast-2D-Bezier-Library-for-ActionScript-3.aspx

+0

감사합니다. 이것은 나쁜 대답 인 것은 아닙니다. 나는 이것이 대답이라고 믿을 수 없습니다. – hooleyhoop

+0

@ fakeAccount22 그 대답은 :) –

+0

이렇게 열심히 노력한 후, 나는 내가 2 차 및 3 차 혼합 믹스를 참조하십시오. 나는 그 질문을 편집했다. 죄송합니다. 이렇게하면 답변이 도움이되지 않습니다. 대답 할 시간을 내 주셔서 감사합니다. – hooleyhoop

1

는이 작업에 큐빅 베 지어 곡선을 그릴 수있는 좋은 게시물입니다 fl.motion.BezierSegment 클래스를 사용하여 cript :

http://www.eleqtriq.com/2010/04/cubic-bezier-in-flash/

그것은 끝내 - 당신이 페이지의 다른 링크의 대부분을 필요로하는 코드와 클래스의 일부와 여러 세그먼트와 완벽한 곡선을 만들어 :

var resolution :uint  = 50; 
var step  :Number  = 1/resolution; 

function drawCurve(p0:Point, c0:Point, c1:Point, p1:Point) 
{ 
    var bezier :BezierSegment = new BezierSegment(p0, c0, c1, p1); 
    var t  :Number   = 0; 
    while (t <= 1) 
    { 
     var pt:Point = bezier.getValue(t); 
     with (graphics) 
     { 
      lineStyle(0.1, 0x00FFFF); 
      t == 0 
       ? moveTo(pt.x, pt.y) 
       : lineTo(pt.x, pt.y); 
     } 
     t+=step; 
    } 
    pt = bezier.getValue(1); 
    graphics.lineTo(pt.x, pt.y);  
} 

정말 멋진 소식입니다!