Difference between revisions of "Polynomial curve of constant width"

From JSXGraph Wiki
Jump to navigationJump to search
Line 40: Line 40:
                               p  =  aa*co*co+bb;
                               p  =  aa*co*co+bb;
                               ps = -aa*kk*co*si;
                               ps = -aa*kk*co*si;
console.log(aa, bb, kk);
                               return p*Math.cos(phi)-ps*Math.sin(phi);
                               return p*Math.cos(phi)-ps*Math.sin(phi);

Revision as of 10:43, 7 June 2011

The curve defined by

[math] p(\phi) = a\cdot cos(k\cdot\phi/2)+b [/math]

in polar form is smooth and of constant width for odd values of [math]k[/math]. In the visuzalitaion with JSXGraph below [math]k[/math] is determined

[math]k = 2k'+1.[/math]


The underlying JavaScript code

var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-2,2,2,-2], keepaspectratio:true});
var a = brd.create('slider',[[-1,1.8],[1,1.8],[-5,0.20,5]], {name:'a'});
var b = brd.create('slider',[[-1,1.6],[1,1.6],[-5,1.15,10]], {name:'b'});
var k = brd.create('slider',[[-1,1.4],[1,1.4],[1,1,11]], {name:'k\'', snapWidth:1});

var p = brd.create('curve',[function(phi, suspendUpdate){ 
                              var kk, aa, bb;
                              if (!suspendUpdate) {
                                aa = a.Value();
                                bb = b.Value();
                                kk = 2*k.Value()+1;
                              var co = Math.cos(kk*phi*0.5);
                              return aa*co*co+bb;
                             },[0,0], 0,Math.PI*2], {curveType:'polar', strokeWidth:10, strokeColor:'#ad5544'});