public void TestTrigonometricRelations() { var randomSimplices = Simplex3D.RandomSamples(NUMBER_SAMPLES); foreach (var randomSimplex in randomSimplices) { randomSimplex.Compute(MESH_STEPS, false); var trianlges = randomSimplex.Triangles; foreach (var triangle in trianlges) { var trigonometricRelations = Relations(); foreach (var trigonometricRelation in trigonometricRelations) { var deviation = Math.Abs(trigonometricRelation(triangle) - .0); if (deviation >= TOLERANCE) { throw new Exception($"Deviation to high!"); } } } } }
private static void Execute(Options options) { var path = "C:\\Users\\bergerd\\simplices.csv"; var samples = ShearTriangle2D.RandomSamples(50000); //foreach(var sample in samples) // VariousHelpers.SampleToFile(path, sample); Console.WriteLine(MessageAtStart(options)); var randomSimplices = Simplex3D.RandomSamples(options.NumberSamples); var counter = 0; var progressBar = new ProgressBar(); var nbThreads = 7; var vols = new double[nbThreads]; if (File.Exists(path)) { File.Delete(path); } var partition = VariousHelpers.GetPartition(options.NumberSamples, nbThreads); Parallel.For(0, nbThreads, ell => { for (int i = partition[ell][0]; i < partition[ell][1]; i++) { var stopWatch = new Stopwatch(); stopWatch.Start(); randomSimplices[i].Compute(3000); stopWatch.Stop(); counter += 1; Debug.WriteLine($"Successfully generated {counter} random samples."); lock (_simplexLock) { progressBar.Report(counter, options.NumberSamples, stopWatch.Elapsed.TotalSeconds); VariousHelpers.SampleToFile(path, randomSimplices[i]); } } }); /* * var sampleFactory = new SampleFactory(options.NumberSamples, options.Dimension, options.Integrate, * options.MeshSteps, options.MaxNorm, options.ZeroAmongEdges, options.ComputeAngles, options.ComputeAnalytical); * * var progressBar = new ProgressBar(); * sampleFactory.RaiseSampleCreatorEvent += progressBar.HandleSampleCreationEvent; * * Console.WriteLine(_computing); * (var randomSimplices, var hyperRandomComplexes) = sampleFactory.RandomSamples(); */ }
public ShearTriangle2D(double[] _B, double[] _C) { m_B = _B; m_C = _C; Alpha = Simplex3D.Angle(m_A, m_B, m_C); Beta = Simplex3D.Angle(m_B, m_A.Subtract(m_B), m_C.Subtract(m_B)); Gamma = Simplex3D.Angle(m_C, m_A.Subtract(m_C), m_B.Subtract(m_C)); A = Length(m_B, m_C); B = Length(m_A, m_C); C = Length(m_A, m_B); Surface = Math.PI - Alpha - Beta - Gamma; }
public void TestAngleBetweenFacesII() { var randomSimplices = Simplex3D.RandomSamples(NUMBER_SAMPLES); foreach (var randomSimplex in randomSimplices) { var normalABCD = randomSimplex.Angle("A", "B", "C", "D"); var normalBACD = randomSimplex.Angle("B", "A", "C", "D"); var normalABDC = randomSimplex.Angle("A", "B", "D", "C"); var normalBADC = randomSimplex.Angle("B", "A", "D", "C"); if (Math.Abs(normalABCD - normalBACD) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } if (Math.Abs(normalABCD - normalABDC) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } if (Math.Abs(normalABCD - normalBADC) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } if (Math.Abs(normalBACD - normalABDC) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } if (Math.Abs(normalBACD - normalBADC) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } if (Math.Abs(normalABDC - normalBADC) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } } }
public static void SampleToFile(string path, Simplex3D sample) { var engine = new FileHelperEngine(typeof(Simplex3D)); var samples = new List <Simplex3D>() { sample }; if (File.Exists(path)) { engine.AppendToFile(path, sample); } else { engine.HeaderText = engine.GetFileHeader(); engine.WriteFile(path, new List <Simplex3D>() { sample }); } }
public void TestAngleBetweenFacesI() { var randomSimplices = Simplex3D.RandomSamples(NUMBER_SAMPLES); foreach (var randomSimplex in randomSimplices) { var normalABC = randomSimplex.NormalOnFace("A", "B", "C"); var normalABD = randomSimplex.NormalOnFace("A", "D", "B"); var A = randomSimplex.GetPoint("A"); var angleA = Math.PI - Simplex3D.Angle(A, normalABC, normalABD); var normalBCA = randomSimplex.NormalOnFace("B", "C", "A"); var normalBAD = randomSimplex.NormalOnFace("B", "A", "D"); var B = randomSimplex.GetPoint("B"); var angleB = Math.PI - Simplex3D.Angle(B, normalBCA, normalBAD); if (Math.Abs(angleA - angleB) >= TOLERANCE) { throw new Exception($"Deviation to high!"); } } }
public void TestStandardSimplex() { var standardSimplex = Simplex3D.GetStandardSimplex(); standardSimplex.Compute(MESH_STEPS, false); var trianlges = standardSimplex.Triangles; foreach (var triangle in trianlges) { var trigonometricRelations = Relations(); foreach (var trigonometricRelation in trigonometricRelations) { var deviation = Math.Abs(trigonometricRelation(triangle) - .0); if (deviation >= TOLERANCE) { throw new Exception($"Deviation to high!"); } } } }
public List <Simplex3D> FastRandomSamples3D() { return(Simplex3D.RandomSamples(NbSamples, MaxNorm)); }
// Update is called once per frame void Update() { double noise = Simplex3D.calcNoise((transform.position.x + Time.time / vel) / scale, (transform.position.y + Time.time / vel) / scale, (transform.position.z + Time.time / vel) / scale); transform.localScale = new Vector3((float)(1 + noise / amplitude), (float)(1 + noise / amplitude), (float)(1 + noise / amplitude)); }