public static FuncUniformDataSource3D<Vector3D> CreateTangentPotentialField(PotentialField3D potentialField, int width = 100, int height = 100, int depth = 100)
		{
			FuncUniformDataSource3D<Vector3D> dataSource = new FuncUniformDataSource3D<Vector3D>(
				(i, j, k) => potentialField.GetTangentVector(new Point3D(i / (double)width, j / (double)height, k / (double)depth)),
				width: width, height: height, depth: depth);
			return dataSource;
		}
		public static FuncUniformDataSource3D<Vector3D> CreatePotentialField(int width, int height, int depth, params PotentialPoint3D[] points)
		{
			var potentialField = new PotentialField3D();
			potentialField.AddPoints(points);

			return CreatePotentialField(potentialField, width: width, height: height, depth: depth);
		}
Beispiel #3
0
        public static FuncUniformDataSource3D <Vector3D> CreateTangentPotentialField(PotentialField3D potentialField, int width = 100, int height = 100, int depth = 100)
        {
            FuncUniformDataSource3D <Vector3D> dataSource = new FuncUniformDataSource3D <Vector3D>(
                (i, j, k) => potentialField.GetTangentVector(new Point3D(i / (double)width, j / (double)height, k / (double)depth)),
                width: width, height: height, depth: depth);

            return(dataSource);
        }
Beispiel #4
0
        public static FuncUniformDataSource3D <Vector3D> CreatePotentialField(int width, int height, int depth, params PotentialPoint3D[] points)
        {
            var potentialField = new PotentialField3D();

            potentialField.AddPoints(points);

            return(CreatePotentialField(potentialField, width: width, height: height, depth: depth));
        }
		void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			var dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);

			isoSurface.DataSource = dataSource3D.GetMagnitudeDataSource();
		}
		private void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			var dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);
			streamlineChart.DataSource = dataSource3D;
			dynamicStreamLine.DataSource = dataSource3D;
			dynamicStreamLine.Pattern = patternChart.OutPattern;
		}
		private void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);

			plotterXY.DataContext = dataSource3D.CreateSectionXY(0.0);
			plotterXZ.DataContext = dataSource3D.CreateSectionXZ(0.0);
			plotterYZ.DataContext = dataSource3D.CreateSectionYZ(0.0);
		}
		void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			var dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);

			convolutionStack.DataSource = dataSource3D;

			progressBar.SetBinding(ProgressBar.ValueProperty, new Binding("RenderingProgress") { Source = convolutionStack });
		}
		void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			tabControl.SelectionChanged += new SelectionChangedEventHandler(tabControl_SelectionChanged);

			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			PotentialFieldChart3D fieldChart = new PotentialFieldChart3D { Field = field };
			viewport.Children.Insert(0, fieldChart);

			dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);

			//dataSource3D = VectorField3D.CreatePotentialField(200, 200, 200,
			//    new PotentialPoint3D(new Point3D(0.5, 0.5, 0.5), 2), new PotentialPoint3D(new Point3D(0.2, 0.2, 0.5), -1));

			DataContext = dataSource3D;
			isoSurface.DataSource = dataSource3D.GetMagnitudeDataSource();


			//var spiralDS = VectorField3D.CreateSpiral(
			//    latticeX: 10, latticeY: 20, latticeZ: 3,
			//    width: 2, height: 2, depth: 1).TransformGrid(transform);

			var filteredDataSource = dataSource3D.Filter(20, 20, 20);
			//vectorChart3D.DataSource = filteredDataSource;
			//gridChart.GridSource = filteredDataSource;

			//timer.Start();

			plotterXY.DataContext = dataSource3D.CreateSectionXY(0.0);
			plotterXZ.DataContext = dataSource3D.CreateSectionXZ(0.0);
			plotterYZ.DataContext = dataSource3D.CreateSectionYZ(0.0);

			sectionChartX.ThirdCoordinate = 0.0001;
			sectionChartY.ThirdCoordinate = 0.0001;
			sectionChartZ.ThirdCoordinate = 0.0001;
			sectionChartX.UpdateUI();
			sectionChartY.UpdateUI();
			sectionChartZ.UpdateUI();

			mainTabControl.SelectedIndex = 3;
			convolutionStack.DataSource = dataSource3D;

			UpdateSelectedTab();

			progressBar.SetBinding(ProgressBar.ValueProperty, new Binding("RenderingProgress") { Source = convolutionStack });
		}
		private void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{
			PotentialField3D field = new PotentialField3D();
			field.AddPotentialPoint(new Point3D(0.5, 0.5, 0.5), 2);
			field.AddPotentialPoint(new Point3D(0.2, 0.2, 0.5), -3);
			field.AddPotentialPoint(new Point3D(0.8, 0.2, 0.9), 10);
			field.AddPotentialPoint(new Point3D(0.3, 0.7, 0.1), 5);

			dataSource3D = VectorField3D.CreateTangentPotentialField(field, 200, 200, 200);
			DataContext = dataSource3D;

			sectionChartX.ThirdCoordinate = 0.0001;
			sectionChartY.ThirdCoordinate = 0.0001;
			sectionChartZ.ThirdCoordinate = 0.0001;

			UpdateSelectedTab();

			PotentialFieldChart3D fieldChart = new PotentialFieldChart3D { Field = field };
			viewport.Children.Insert(0, fieldChart);
		}