Polynomial curve of constant width: Difference between revisions
From JSXGraph Wiki
| A WASSERMANN (talk | contribs) No edit summary | A WASSERMANN (talk | contribs) No edit summary | ||
| Line 31: | Line 31: | ||
| var p2 = brd.create('curve',[function(phi, suspendUpdate){   | var p2 = brd.create('curve',[function(phi, suspendUpdate){   | ||
|                                var kk, aa, bb, p, ps, co, si; |                                var kk, aa, bb, p, ps, co, si; | ||
|                                if ( |                                if (!suspendUpdate) { | ||
|                                  aa = a.Value(); |                                  aa = a.Value(); | ||
|                                  bb = b.Value(); |                                  bb = b.Value(); | ||
| Line 44: | Line 44: | ||
|                               function(phi, suspendUpdate){   |                               function(phi, suspendUpdate){   | ||
|                                var kk, aa, bb, p, ps, co, si; |                                var kk, aa, bb, p, ps, co, si; | ||
|                                if ( |                                if (!suspendUpdate) { | ||
|                                  aa = a.Value(); |                                  aa = a.Value(); | ||
|                                  bb = b.Value(); |                                  bb = b.Value(); | ||
Revision as of 09:51, 7 June 2011
The curve defined by
- [math]\displaystyle{ 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]\displaystyle{ k }[/math]. In the visuzalitaion with JSXGraph below [math]\displaystyle{ k }[/math] is determined
- [math]\displaystyle{ k = 2k'+1. }[/math]
References
The underlying JavaScript code
var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-2,2,2,-2], keepaspectratio:true});
brd.suspendUpdate();
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'});
brd.unsuspendUpdate();
