Ejemplo n.º 1
0
        public Karamba.Results.ShellSection.Retriever GetNewRetriever(PolyLine3 poly)
        {
            var info     = new RetrieverInfo_Force(_model, poly, _projectionVector, _tol, _delta, "0");
            var strategy = new RetrieverStrategy_Force();

            return(new Karamba.Results.ShellSection.Retriever(strategy, info));
        }
        public void FindSection_3ptpolyline_NonPlanarMesh()
        {
            PolyLine3 inputPolyline         = new PolyLine3(new Point3(0.5, -0.5, 1), new Point3(0.5, 1.5, 1));
            Vector3   inputProjectionVector = new Vector3(0, 0, -1);

            _tol = 1E-12;
            var delta      = 0.02;
            var inputModel = MakeNonConvexModel();

            var info     = new RetrieverInfo_Force(inputModel, inputPolyline, inputProjectionVector, _tol, delta, "0");
            var strategy = new RetrieverStrategy_Force();
            var sut      = new Karamba.Results.ShellSection.Retriever(strategy, info);



            sut.FindSection(out var outputPolylines, out var outputFaceIndxs);



            var expectedPolylines = new PolyLine3
                                    (
                new Point3(0.5, 0, 0.25),
                new Point3(0.5, 0.5, 0.75),
                new Point3(0.5, 1, 0.5)
                                    );
            var expectedFaceIndxs = new List <int>()
            {
                0, 1
            };


            Assert.That(outputPolylines[0], Is.EqualTo(expectedPolylines).Using <PolyLine3>(EqualityWithTol));
            Assert.That(outputFaceIndxs[0], Is.EqualTo(expectedFaceIndxs));
        }
Ejemplo n.º 3
0
        public void GetResult_RetrieveForce()
        {
            RetrieverStrategy_Force strategy = new RetrieverStrategy_Force();
            var       retrieverInfo          = new RetrieverInfo_Force(_model, _inputPolyline, _projectionVector, _tol, _delta, "0");
            Retriever sub = new Retriever(strategy, retrieverInfo);



            var output = sub.GetResults(_outputPolylines, _outputCrossedFaces);



            Assert.AreEqual(output[ShellSecResult.N_tt][0][0][0], -0.11520737327188897, _tol);
            Assert.AreEqual(output[ShellSecResult.N_tt][0][0][1], -0.89861751152073854, _tol);

            Assert.AreEqual(output[ShellSecResult.N_nn][0][0][0], -10.115207373271891, _tol);
            Assert.AreEqual(output[ShellSecResult.N_nn][0][0][1], -9.8847926267281174, _tol);

            Assert.AreEqual(output[ShellSecResult.N_tn][0][0][0], 0.11520737327188962, _tol);
            Assert.AreEqual(output[ShellSecResult.N_tn][0][0][1], -0.11520737327188892, _tol);

            Assert.AreEqual(output[ShellSecResult.M_tt][0][0][0], 0.70864983417139238, _tol);
            Assert.AreEqual(output[ShellSecResult.M_tt][0][0][1], 0.47735904568310589, _tol);

            Assert.AreEqual(output[ShellSecResult.M_nn][0][0][0], 4.7490504974858254, _tol);
            Assert.AreEqual(output[ShellSecResult.M_nn][0][0][1], 5.2509495025141719, _tol);

            Assert.AreEqual(output[ShellSecResult.M_tn][0][0][0], -0.22885016582860404, _tol);
            Assert.AreEqual(output[ShellSecResult.M_tn][0][0][1], -0.11609674227024558, _tol);

            Assert.AreEqual(output[ShellSecResult.V_t][0][0][0], 0.30910653150743272, _tol);
            Assert.AreEqual(output[ShellSecResult.V_t][0][0][1], -0.25541283299453926, _tol);

            Assert.AreEqual(output[ShellSecResult.V_n][0][0][0], -10.309106531507435, _tol);
            Assert.AreEqual(output[ShellSecResult.V_n][0][0][1], -9.6908934684925558, _tol);
        }