/* METHODS */ //we will plot the parameter along the horizontal axis and the orbit values along the vertical. public static List <Vector3> GetOrbit(QuadraticFunction quadraticFunction, float muMin, float muMax, int steps, float orbitPoint, int minOrbits, int maxOrbits, float scale) { List <Vector3> coordinates = new List <Vector3>(); float dmu = (muMax - muMin) / steps; //loop through mu's: for (float mu = muMin; mu < muMax; mu += dmu) { float orbitValue = orbitPoint; quadraticFunction.mu = mu; //loop through number of orbits to graph: for (int i = 0; i < maxOrbits; i++) { float currentOrbit = quadraticFunction.Image(orbitValue); if (i > minOrbits) { coordinates.Add(new Vector3(scale * mu, scale * currentOrbit, quadraticFunction.position.Z)); } orbitValue = currentOrbit; } } return(coordinates); }
private Environment[] GetScholarsDayEnvironments() { Environment[] scholarsDayEnvironments = new Environment[23]; //set environments: Vector3 graphicalAnalysisPosition = new Vector3(0, 0, -10); Vector3 lorenzPosition = new Vector3(0, -29, -55); Vector3 white = new Vector3(1, 1, 1); Vector3 black = new Vector3(0, 0, 0); int numberOfNodes = 1000; float nodeVelocity = 0.03f; int pointSize = 0; int functionPointSize = 1; float scale = 5; //first environment: demonstrate how graphical analysis is a great representation of iterating functions. CosineFunction cosineFunction = new CosineFunction(-6f, 6f, 1000, scale, graphicalAnalysisPosition, white, functionPointSize, 1); scholarsDayEnvironments[0] = LoadGraphicalAnalysis(cosineFunction, scale, 1000, nodeVelocity, false, pointSize); //second through ninth environments: quadratic function. change the mu values around. //QuadraticFunction quadraticFunction; QuadraticFunction quadraticFunction; QuadraticSquareFunction quadraticSquareFunction; float startTime = 0; float finalTime = 1; int steps = 1000; //change mu around: scholarsDayEnvironments[1] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 1f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[2] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 1.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[3] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 2), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[4] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 2.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[5] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[6] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.2f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[7] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[8] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.839f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[9] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 4), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[14] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 1), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[15] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 1.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[16] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 2), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[17] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 2.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[18] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[19] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.2f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[20] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[21] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 3.839f), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[22] = LoadGraphicalAnalysis(quadraticSquareFunction = new QuadraticSquareFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 4.5f), scale, numberOfNodes, nodeVelocity, false, pointSize); //watch points escape without the chaos tracker: scholarsDayEnvironments[10] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 5), scale, 1000, nodeVelocity, false, pointSize); //watch points escape with the chaos tracker: scholarsDayEnvironments[11] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 5), scale, 10000, nodeVelocity, true, pointSize); //Mandelbrot set: scholarsDayEnvironments[12] = LoadMandelbrotFractal(); //Lorenz: //scholarsDayEnvironments[13] = LoadLorenzDataSet(lorenzPosition, 10, 10, 10, 0, 100, 30000, 10, 30, 8f / 3f); //scholarsDayEnvironments[13] = LoadDoublePendulumDataSet(new Vector3(0, 0, -10), 0.5f, 0.5f, 2, 1, 0, 10, 1000, 1, 1, 2, 2); //scholarsDayEnvironments[11] = LoadGraphicalAnalysis(quadraticFunction = new QuadraticFunction(startTime, finalTime, steps, scale, graphicalAnalysisPosition, white, functionPointSize, 4), scale, numberOfNodes, nodeVelocity, false, pointSize); scholarsDayEnvironments[13] = LoadBifurcationDiagramDataSet(new Vector3(-3, 0, -1), new Vector3(0, 0, 0), new QuadraticFunction(0, 1, 1000, 5, new Vector3(-3, 0, -1), new Vector3(0, 0, 0), 1, 1), 1f, 4f, 10000, 0.75f, 400, 500, 1); return(scholarsDayEnvironments); }
private Environment LoadBifurcationDiagramDataSet(Vector3 position, Vector3 color, QuadraticFunction quadraticFunction, float muMin, float muMax, int steps, float orbitPoint, int minOrbits, int maxOrbits, float scale) { return(new DataSet(loader, position, color, PrimitiveType.Points, Mathematics.BifurcationDiagram.GetOrbit(quadraticFunction, muMin, muMax, steps, orbitPoint, minOrbits, maxOrbits, scale))); }