var options = { option1:{ pond1: { r:-0.05, N:80, K:200 }, pond2: { r:0.15, N:25, K:100 }, pond3: { r:0.18, N:150, K:500 } }, option2:{ pond1: { r:0.15, N:80, K:200 }, pond2: { r:-0.2, N:25, K:100 }, pond3: { r:0.18, N:150, K:500 } }, option3:{ pond1: { r:0.1, N:80, K:200 }, pond2: { r:0.15, N:25, K:100 }, pond3: { r:0.01, N:150, K:500 } } } var totalK = options.option1.pond1.K + options.option1.pond2.K + options.option1.pond3.K; var totalCarryingCapacity = totalK + 50; function pickOption(option){ totalr = 0; totalN = 0; switch (option) { case 1: totalCarryingCapacity = options.option1.pond1.K + options.option1.pond2.K + options.option1.pond3.K + 50; totalr = options.option1.pond1.r + options.option1.pond2.r + options.option1.pond3.r; totalN = options.option1.pond1.N + options.option1.pond2.N + options.option1.pond3.N; totalK = options.option1.pond1.K + options.option1.pond2.K + options.option1.pond3.K; break; case 2: totalCarryingCapacity = options.option2.pond1.K + options.option2.pond2.K + options.option2.pond3.K + 50; totalr = options.option2.pond1.r + options.option2.pond2.r + options.option2.pond3.r; totalN = options.option2.pond1.N + options.option2.pond2.N + options.option2.pond3.N; totalK = options.option2.pond1.K + options.option2.pond2.K + options.option2.pond3.K; break; case 3: totalCarryingCapacity = options.option3.pond1.K + options.option3.pond2.K + options.option3.pond3.K + 50; totalr = options.option3.pond1.r + options.option3.pond2.r + options.option3.pond3.r; totalN = options.option3.pond1.N + options.option3.pond2.N + options.option3.pond3.N; totalK = options.option3.pond1.K + options.option3.pond2.K + options.option3.pond3.K; break; default: break; } } function updateTable_option(option) { switch (option) { case 1: document.getElementById("01-K").innerHTML = options.option1.pond1.K; document.getElementById("02-K").innerHTML = options.option1.pond2.K; document.getElementById("03-K").innerHTML = options.option1.pond3.K; document.getElementById("01-N").innerHTML = options.option1.pond1.N; document.getElementById("02-N").innerHTML = options.option1.pond2.N; document.getElementById("03-N").innerHTML = options.option1.pond3.N; document.getElementById("01-r").innerHTML = options.option1.pond1.r; document.getElementById("02-r").innerHTML = options.option1.pond2.r; document.getElementById("03-r").innerHTML = options.option1.pond3.r; break; case 2: document.getElementById("01-K").innerHTML = options.option2.pond1.K; document.getElementById("02-K").innerHTML = options.option2.pond2.K; document.getElementById("03-K").innerHTML = options.option2.pond3.K; document.getElementById("01-N").innerHTML = options.option2.pond1.N; document.getElementById("02-N").innerHTML = options.option2.pond2.N; document.getElementById("03-N").innerHTML = options.option2.pond3.N; document.getElementById("01-r").innerHTML = options.option2.pond1.r; document.getElementById("02-r").innerHTML = options.option2.pond2.r; document.getElementById("03-r").innerHTML = options.option2.pond3.r; break; case 3: document.getElementById("01-K").innerHTML = options.option3.pond1.K; document.getElementById("02-K").innerHTML = options.option3.pond2.K; document.getElementById("03-K").innerHTML = options.option3.pond3.K; document.getElementById("01-N").innerHTML = options.option3.pond1.N; document.getElementById("02-N").innerHTML = options.option3.pond2.N; document.getElementById("03-N").innerHTML = options.option3.pond3.N; document.getElementById("01-r").innerHTML = options.option3.pond1.r; document.getElementById("02-r").innerHTML = options.option3.pond2.r; document.getElementById("03-r").innerHTML = options.option3.pond3.r; break; default: break; } } var brd1 = JXG.JSXGraph.initBoard('mod-graph', {boundingbox: [-4, totalCarryingCapacity, 58,-50], axis:true, showCopyright: false, showNavigation: false}); var t1 = brd1.create('turtle'); t1.setAttribute({strokeColor: '#1586AD'}); var t2 = brd1.create('turtle'); t2.setAttribute({strokeColor: '#15AD33'}); var t3 = brd1.create('turtle'); t3.setAttribute({strokeColor:'#3A15AD'}); var t4 = brd1.create('turtle'); //t1.hideTurtle(); var p1_1 = brd1.create('point', [0,totalK], {name:'Total Carrying Capacity = ' + totalK + ' Breeding Females', size:4}); var p2_1 = brd1.create('point', [60,totalK], {size:4}); var carryingCapacityLine1 = brd1.create('line', [p1_1,p2_1], {strokeColor: '#D73F09', strokeWidth:4}); function clearturtle() { t1.cs(); t1.ht(); t2.cs(); t2.ht(); t3.cs(); t3.ht(); t4.cs(); t4.ht(); } function run(option) { t1.setPos(0, 2); t1.setPenSize(4); t2.setPos(0, 2); t2.setPenSize(4); t3.setPos(0, 2); t3.setPenSize(4); t4.setPos(0, 2); t4.setPenSize(6); dx1 = 0.1; // global x1 = 0.0; // global dx2 = 0.1; x2 = 0.0; dx3 = 0.1; x3 = 0.0; dx4 = 0.1; x4 = 0.0; a = 0.0001 b = 0.0001 switch (option) { case 1: N1 = options.option1.pond1.N; N2 = options.option1.pond2.N; N3 = options.option1.pond3.N; K1 = options.option1.pond1.K; K2 = options.option1.pond2.K; K3 = options.option1.pond3.K; r1 = options.option1.pond1.r; r2 = options.option1.pond2.r; r3 = options.option1.pond3.r; totalN = N1 + N2 + N3; totalK = K1 + K2 + K3; totalr = r1 + r2 + r3; break; case 2: N1 = options.option2.pond1.N; N2 = options.option2.pond2.N; N3 = options.option2.pond3.N; K1 = options.option2.pond1.K; K2 = options.option2.pond2.K; K3 = options.option2.pond3.K; r1 = options.option2.pond1.r; r2 = options.option2.pond2.r; r3 = options.option2.pond3.r; totalN = N1 + N2 + N3; totalK = K1 + K2 + K3; totalr = r1 + r2 + r3; break; case 3: N1 = options.option3.pond1.N; N2 = options.option3.pond2.N; N3 = options.option3.pond3.N; K1 = options.option3.pond1.K; K2 = options.option3.pond2.K; K3 = options.option3.pond3.K; r1 = options.option3.pond1.r; r2 = options.option3.pond2.r; r3 = options.option3.pond3.r; totalN = N1 + N2 + N3; totalK = K1 + K2 + K3; totalr = r1 + r2 + r3; default: break; } loop(); } function loop() { var pond1turtle = (r1 * N1 * (1 - N1 / K1) - a * N1 + b * (N2 + N3)) * dx1; var pond2turtle = (r2 * N2 * (1 - N2 / K2) - a * N2 + b * (N1 + N3)) * dx2; var pond3turtle = (r3 * N3 * (1 - N3 / K3) - a * N3 + b * (N1 + N2)) * dx3; N1 += pond1turtle; N2 += pond2turtle; N3 += pond3turtle; var metaTurtle = pond1turtle + pond2turtle + pond3turtle; t1.moveTo([dx1 + t1.X(), pond1turtle + t1.Y()]); t2.moveTo([dx2 + t2.X(), pond2turtle + t2.Y()]); t3.moveTo([dx3 + t3.X(), pond3turtle + t3.Y()]); t4.moveTo([dx4 + t4.X(), metaTurtle + t4.Y()]); x1 += dx1; x2 += dx2; x3 += dx3; x4 += dx4; if (x1 < 58.0) { setTimeout(loop, 10); } }