# Difference between revisions of "Circular arc approximation by cubic Bezier curve"

From JSXGraph Wiki

Jump to navigationJump to searchA WASSERMANN (talk | contribs) |
A WASSERMANN (talk | contribs) |
||

Line 6: | Line 6: | ||

var A = brd.create('glider', [1,0,c], {name:'A'}); | var A = brd.create('glider', [1,0,c], {name:'A'}); | ||

var B = brd.create('glider', [0,1,c], {name:'B'}); | var B = brd.create('glider', [0,1,c], {name:'B'}); | ||

+ | |||

+ | var k = function(M, A, B) { | ||

+ | var ax = A.X()-M.X(), | ||

+ | ay = A.Y()-M.Y(), | ||

+ | bx = B.X()-M.X(), | ||

+ | by = B.Y()-M.Y(), | ||

+ | d, r; | ||

+ | r = M.Dist(A); | ||

+ | d = Math.sqrt((ax+bx)*(ax+bx) + (ay+by)*(ay+by)); | ||

+ | |||

+ | if (Math.abs(by-ay)>JXG.Math.eps) { | ||

+ | return (ax+bx)*(r/d-0.5)*8.0/3.0/(by-ay); | ||

+ | } else { | ||

+ | return (ay+by)*(r/d-0.5)*8.0/3.0/(ax-bx); | ||

+ | } | ||

+ | }; | ||

+ | var P1 = brd.create('point', [ | ||

+ | function(){ return M.X()+A.X()-k(M,A,B)*(A.Y()-M.Y()); }, | ||

+ | function(){ return M.Y()+A.Y()+k(M,A,B)*(A.X()-M.X()); } | ||

+ | ], {}); | ||

+ | |||

+ | |||

+ | |||

+ | |||

</jsxgraph> | </jsxgraph> | ||