Reuleaux pentagon: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) No edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
Line 11: | Line 11: | ||
var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-5,5,5,-5]}); | var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-5,5,5,-5]}); | ||
brd.suspendUpdate(); | brd.suspendUpdate(); | ||
var pi2 = 2.0*Math.PI; | |||
// Pentagon | // Pentagon | ||
Line 16: | Line 18: | ||
var B = brd.create('point',[2,-2]); | var B = brd.create('point',[2,-2]); | ||
var pol = brd.create('regularpolygon',[A,B,5], {withLines:false, fillColor:'none', highlightFillColor:'none'}); | var pol = brd.create('regularpolygon',[A,B,5], {withLines:false, fillColor:'none', highlightFillColor:'none'}); | ||
var reuleauxPentagon = brd.create('curve',[ | var reuleauxPentagon = brd.create('curve',[ | ||
function(t) { | function(t) { | ||
var pi2_5 = | var pi2_5 = pi2/5; | ||
var p = pol.vertices; | var p = pol.vertices; | ||
var d = p[0].Dist(p[2]); | var d = p[0].Dist(p[2]); | ||
var t1 = (t% | var t1 = (t%pi2 + pi2) % pi2; | ||
var n = Math.floor(t1 / pi2_5)%5; | var n = Math.floor(t1 / pi2_5)%5; | ||
if (isNaN(n)) return n; | if (isNaN(n)) return n; | ||
var beta = JXG.Math.Geometry.rad([p[n].X()+1,p[n].Y()],p[n],p[(n+2)%5]); | var beta = JXG.Math.Geometry.rad([p[n].X()+1,p[n].Y()],p[n],p[(n+2)%5]); | ||
t1 -= n*pi2_5; | t1 -= n*pi2_5; | ||
t1*=0.5; | t1 *=0.5; | ||
t1 += beta; | t1 += beta; | ||
return p[n].X()+d*Math.cos(t1); | return p[n].X()+d*Math.cos(t1); | ||
}, | }, | ||
function(t) { | function(t) { | ||
var pi2_5 = | var pi2_5 = pi2/5; | ||
var p = pol.vertices; | var p = pol.vertices; | ||
var d = p[0].Dist(p[2]); | var d = p[0].Dist(p[2]); | ||
var t1 = (t% | var t1 = (t%pi2 + pi2) % pi2; | ||
var n = Math.floor(t1 / pi2_5)%5; | var n = Math.floor(t1 / pi2_5)%5; | ||
if (isNaN(n)) return n; | if (isNaN(n)) return n; | ||
Line 44: | Line 47: | ||
return p[n].Y()+d*Math.sin(t1); | return p[n].Y()+d*Math.sin(t1); | ||
}, | }, | ||
0, | 0, pi2], | ||
{color:'#093083', highlightFillColor:'#093083'}); | {color:'#093083', highlightFillColor:'#093083'}); | ||
Line 57: | Line 60: | ||
var reuleauxTriangle = brd.create('curve',[ | var reuleauxTriangle = brd.create('curve',[ | ||
function(t) { | function(t) { | ||
var pi2_3 = | var pi2_3 = pi2/3; | ||
var p = pol3.vertices; | var p = pol3.vertices; | ||
var d = p[0].Dist(p[1]); | var d = p[0].Dist(p[1]); | ||
var t1 = (t%(2*Math.PI) + | var t1 = (t%(2*Math.PI) + pi2) % pi2; | ||
var n = Math.floor(t1 / pi2_3)%3; | var n = Math.floor(t1 / pi2_3)%3; | ||
if (isNaN(n)) return n; | if (isNaN(n)) return n; | ||
Line 70: | Line 73: | ||
}, | }, | ||
function(t) { | function(t) { | ||
var pi2_3 = | var pi2_3 = pi2/3; | ||
var p = pol3.vertices; | var p = pol3.vertices; | ||
var d = p[0].Dist(p[1]); | var d = p[0].Dist(p[1]); | ||
var t1 = (t% | var t1 = (t%pi2 + pi2) % pi2; | ||
var n = Math.floor(t1 / pi2_3)%3; | var n = Math.floor(t1 / pi2_3)%3; | ||
if (isNaN(n)) return n; | if (isNaN(n)) return n; | ||
Line 82: | Line 85: | ||
return p[n].Y()+d*Math.sin(t1); | return p[n].Y()+d*Math.sin(t1); | ||
}, | }, | ||
0, | 0, pi2], | ||
{color:'#e8501f', highlightFillColor:'#e8501f'}); | {color:'#e8501f', highlightFillColor:'#e8501f'}); | ||
brd.unsuspendUpdate(); | brd.unsuspendUpdate(); | ||
var rol = JXG.Math.Numerics.createRoulette(reuleauxPentagon, reuleauxTriangle, 6*Math.PI/5, Math.PI/90, 10, [C,D]); </jsxgraph> | |||
var rol = JXG.Math.Numerics.createRoulette(reuleauxPentagon, reuleauxTriangle, 6*Math.PI/5, Math.PI/90, 10, [C,D]); | |||
</jsxgraph> | |||
===The underlying JavaScript code=== | ===The underlying JavaScript code=== | ||
<source lang="javascript"> | <source lang="javascript"> | ||
</source> | </source> |