var options = { option1: { pond1: { r: -0.1, N: 80, K: 100, }, pond2: { r: -0.05, N: 25, K: 50, }, pond3: { r: 0, N: 150, K: 300, }, pond4: { r: "--", N: "--", K: "--", }, }, option2: { pond1: { r: 0.03, N: 80, K: 180, }, pond2: { r: 0.05, N: 25, K: 90, }, pond3: { r: 0.1, N: 150, K: 400, }, pond4: { r: "--", N: "--", K: "--", }, }, option3: { pond1: { r: -0.05, N: 80, K: 100, }, pond2: { r: 0.07, N: 25, K: 50, }, pond3: { r: 0.1, N: 150, K: 300, }, pond4: { r: 0.4, N: 0, K: 250, }, }, }; var totalK = options.option1.pond1.K + options.option1.pond2.K + options.option1.pond3.K; console.log(options.option1.pond4.K); var totalCarryingCapacity = totalK + 300; var carryingCapacityLine; var p1; var p2; function pickOption(option){ totalr = 0; totalN = 0; switch (option) { case 1: brd1.removeObject(carryingCapacityLine); brd1.removeObject(p1); brd1.removeObject(p2); 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 ; buildCapacityLine(); break; case 2: brd1.removeObject(carryingCapacityLine); brd1.removeObject(p1); brd1.removeObject(p2); 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 ; buildCapacityLine(); break; case 3: brd1.removeObject(carryingCapacityLine); brd1.removeObject(p1); brd1.removeObject(p2); totalCarryingCapacity = options.option3.pond1.K + options.option3.pond2.K + options.option3.pond3.K + options.option3.pond4.K + 50; totalr = options.option3.pond1.r + options.option3.pond2.r + options.option3.pond3.r + options.option3.pond4.r; totalN = options.option3.pond1.N + options.option3.pond2.N + options.option3.pond3.N + options.option3.pond4.N; totalK = options.option3.pond1.K + options.option3.pond2.K + options.option3.pond3.K + options.option3.pond4.K; buildCapacityLine(); 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("04-K").innerHTML = options.option1.pond4.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("04-N").innerHTML = options.option1.pond4.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; document.getElementById("04-r").innerHTML = options.option1.pond4.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("04-K").innerHTML = options.option2.pond4.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("04-N").innerHTML = options.option2.pond4.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; document.getElementById("04-r").innerHTML = options.option2.pond4.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("04-K").innerHTML = options.option3.pond4.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("04-N").innerHTML = options.option3.pond4.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; document.getElementById("04-r").innerHTML = options.option3.pond4.r; break; default: break; } } function buildCapacityLine(){ // switch (option) { // case 1: // totalK = options.option1.pond1.K + options.option1.pond2.K + options.option1.pond3.K; // break; // case 2: // totalK = options.option2.pond1.K + options.option2.pond2.K + options.option2.pond3.K; // break; // case 3: // totalK = options.option3.pond1.K + options.option3.pond2.K + options.option3.pond3.K + options.option3.pond4.K; // break; // default: // break; // } p1 = brd1.create('point', [0,totalK], {name:'Total Carrying Capacity = ' + totalK + ' Breeding Females', size:4}); p2 = brd1.create('point', [60,totalK], {size:4}); carryingCapacityLine = brd1.create('line', [p1,p2], {strokeColor: '#D73F09', strokeWidth:4}); } 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'); t4.setAttribute({strokeColor:'#FF8C00'}); var tm = brd1.create('turtle'); tm.setAttribute({strokeColor: '#000000'}) //t1.hideTurtle(); var p1 = brd1.create('point', [0,totalK], {name:'Total Carrying Capacity = ' + totalK + ' Breeding Females', size:4}); var p2 = brd1.create('point', [60,totalK], {size:4}); var carryingCapacityLine = brd1.create('line', [p1,p2], {strokeColor: '#D73F09', strokeWidth:4}); function clearturtle() { t1.cs(); t1.ht(); t2.cs(); t2.ht(); t3.cs(); t3.ht(); tm.cs(); tm.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); tm.setPos(0, 2); tm.setPenSize(6); t4.setPos(0,2); t4.setPenSize(4); dx1 = 0.1; // global x1 = 0.0; // global dx2 = 0.1; x2 = 0.0; dx3 = 0.1; x3 = 0.0; dxm = 0.1; xm = 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; N4 = options.option1.pond4.N; K1 = options.option1.pond1.K; K2 = options.option1.pond2.K; K3 = options.option1.pond3.K; //K4 = options.option1.pond4.K; r1 = options.option1.pond1.r; r2 = options.option1.pond2.r; r3 = options.option1.pond3.r; //r4 = options.option1.pond4.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; N4 = options.option2.pond4.N; K1 = options.option2.pond1.K; K2 = options.option2.pond2.K; K3 = options.option2.pond3.K; //K4 = options.option2.pond4.K; r1 = options.option2.pond1.r; r2 = options.option2.pond2.r; r3 = options.option2.pond3.r; //r4 = options.option2.pond4.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; N4 = options.option3.pond4.N; K1 = options.option3.pond1.K; K2 = options.option3.pond2.K; K3 = options.option3.pond3.K; K4 = options.option3.pond4.K; r1 = options.option3.pond1.r; r2 = options.option3.pond2.r; r3 = options.option3.pond3.r; r4 = options.option3.pond4.r; totalN = N1 + N2 + N3 + N4; totalK = K1 + K2 + K3 + K4; totalr = r1 + r2 + r3 + r4; 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; if (isNaN(N4)){ pond4turtle = 0; } else{ //buildCapacityLine(); var pond4turtle = (r4 * N4 * (1 - N4 / K4) - a * N4 + b * (N1 + N2 + N3)) * dx4; N4 += pond4turtle; t4.moveTo([dx4 + t4.X(), pond4turtle + t4.Y()]); x4 += dx4; } N1 += pond1turtle; N2 += pond2turtle; N3 += pond3turtle; var metaTurtle = pond1turtle + pond2turtle + pond3turtle + pond4turtle; t1.moveTo([dx1 + t1.X(), pond1turtle + t1.Y()]); t2.moveTo([dx2 + t2.X(), pond2turtle + t2.Y()]); t3.moveTo([dx3 + t3.X(), pond3turtle + t3.Y()]); tm.moveTo([dxm + tm.X(), metaTurtle + tm.Y()]); x1 += dx1; x2 += dx2; x3 += dx3; xm += dxm; if (x1 < 58.0) { setTimeout(loop, 10); } } // var brd1 = JXG.JSXGraph.initBoard('mod-graph5', {boundingbox: [-5, totalCarryingCapacity, 58,-50], axis:true, showCopyright: false, showNavigation: false}); // var t5 = brd1.create('turtle',[4,3,70]); // t5.hideTurtle(); // function clearturtle5() { // t5.cs(); // t5.ht(); // } // function run5() { // t5.setPos(0,2); // t5.setPenSize(4); // dx5 = 0.1; // global // x5 = 0.0; // global // loop5(); // } // function loop5() { // var dy = ((totalN * totalr) * ((totalK-totalN)/totalK)) * dx5; // Logistic process // totalN += dy; // t5.moveTo([dx5+t5.X(),dy+t5.Y()]); // x5 += dx5; // if (x5<58.0) { // setTimeout(loop5,10); // } // }