mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3201 Fix error discovered by unit test
This commit is contained in:
parent
fb7a7e39eb
commit
92dd375da3
@ -19,6 +19,7 @@
|
||||
#include "RiaJCurveCalculator.h"
|
||||
#include "RiaOffshoreSphericalCoords.h"
|
||||
#include "cvfMatrix3.h"
|
||||
#include "RiaArcCurveCalculator.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -50,15 +51,21 @@ RiaJCurveCalculator::RiaJCurveCalculator(cvf::Vec3d p1, double azi1, double inc1
|
||||
if (p2c1Length < r1)
|
||||
{
|
||||
// Radius is too big. We can not get to point 2 using the requested radius.
|
||||
|
||||
m_isCalculationOK = false;
|
||||
RiaArcCurveCalculator arc(p1, t1, p2);
|
||||
m_c1 = arc.center();
|
||||
m_n1 = arc.normal();
|
||||
m_firstArcEndpoint = p2;
|
||||
return;
|
||||
}
|
||||
|
||||
double d = sqrt( p2c1Length * p2c1Length - r1 * r1);
|
||||
|
||||
double betha = asin( r1/p2c1Length );
|
||||
cvf::Vec3d tp2c1 = p2c1/p2c1Length;
|
||||
cvf::Vec3d nc1 = t1 ^ tr1;
|
||||
|
||||
cvf::Vec3d tp11p2 = tp2c1.getTransformedVector(cvf::Mat3d::fromRotation(nc1, betha));
|
||||
cvf::Vec3d tp11p2 = -tp2c1.getTransformedVector(cvf::Mat3d::fromRotation(nc1, betha));
|
||||
|
||||
m_firstArcEndpoint = p2 - d*tp11p2;
|
||||
m_c1 = c1;
|
||||
|
@ -715,3 +715,28 @@ TEST(DISABLED_RiaSCurveCalculator, q_r_relation)
|
||||
{ 0,0,-1000 }, M_PI/2, M_PI/2);
|
||||
|
||||
}
|
||||
|
||||
#include "RiaJCurveCalculator.h"
|
||||
|
||||
TEST(RiaJCurveCalculator, Basic)
|
||||
{
|
||||
RiaJCurveCalculator calc({ 0,0,0 }, 0, M_PI/2, 100, { 0,100,-1000 });
|
||||
|
||||
EXPECT_TRUE(calc.isOk() );
|
||||
|
||||
cvf::Vec3d p11 = calc.firstArcEndpoint();
|
||||
EXPECT_NEAR( 0, p11.x(), 1e-5);
|
||||
EXPECT_NEAR( 100, p11.y(), 1e-5);
|
||||
EXPECT_NEAR( -100, p11.z(), 1e-5);
|
||||
|
||||
cvf::Vec3d n = calc.firstNormal();
|
||||
EXPECT_NEAR(-1, n.x(), 1e-5);
|
||||
EXPECT_NEAR( 0, n.y(), 1e-5);
|
||||
EXPECT_NEAR( 0, n.z(), 1e-5);
|
||||
|
||||
cvf::Vec3d c = calc.firstCenter();
|
||||
EXPECT_NEAR( 0, c.x(), 1e-5);
|
||||
EXPECT_NEAR( 0, c.y(), 1e-5);
|
||||
EXPECT_NEAR(-100, c.z(), 1e-5);
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user