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)); }
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); }