From f9d37ee66fa46871478d806faa54de237225d3c6 Mon Sep 17 00:00:00 2001 From: asl Date: Thu, 6 Oct 2016 16:46:53 +0300 Subject: [PATCH] debug of tests for DTM --- src/HYDROData/HYDROData_DTM.cxx | 42 ++++++++++-------- src/HYDROData/HYDROData_DTM.h | 7 ++- src/HYDRO_tests/reference_data/CMakeLists.txt | 2 + src/HYDRO_tests/reference_data/DTM_1.png | Bin 10414 -> 14800 bytes src/HYDRO_tests/reference_data/DTM_2.png | Bin 0 -> 43889 bytes src/HYDRO_tests/test_HYDROData_DTM.cxx | 25 ++++++----- 6 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 src/HYDRO_tests/reference_data/DTM_2.png diff --git a/src/HYDROData/HYDROData_DTM.cxx b/src/HYDROData/HYDROData_DTM.cxx index 036936fc..544dd2e5 100644 --- a/src/HYDROData/HYDROData_DTM.cxx +++ b/src/HYDROData/HYDROData_DTM.cxx @@ -35,8 +35,8 @@ IMPLEMENT_STANDARD_HANDLE( HYDROData_DTM, HYDROData_Bathymetry ) IMPLEMENT_STANDARD_RTTIEXT( HYDROData_DTM, HYDROData_Bathymetry ) -HYDROData_DTM::CurveUZ::CurveUZ( double theXCurv ) - : myXcurv( theXCurv ) +HYDROData_DTM::CurveUZ::CurveUZ( double theXCurv, const gp_Vec2d& theProfileDir ) + : myXcurv( theXCurv ), myProfileDir( theProfileDir ) { } @@ -49,9 +49,14 @@ double HYDROData_DTM::CurveUZ::Xcurv() const return myXcurv; } +gp_Vec2d HYDROData_DTM::CurveUZ::ProfileDir() const +{ + return myProfileDir; +} + HYDROData_DTM::CurveUZ HYDROData_DTM::CurveUZ::operator + ( const CurveUZ& c ) const { - HYDROData_DTM::CurveUZ res( Xcurv() + c.Xcurv() ); + HYDROData_DTM::CurveUZ res( Xcurv() + c.Xcurv(), ProfileDir() + c.ProfileDir() ); size_t n = size(); res.reserve( n ); for( int i=0; i HYDROData_DTM::ProfileToParametric( const Handle_HYDROData_Profile& theProfile, - double& theUMin, double& theUMax ) + double& theUMin, double& theUMax, gp_Vec2d& theDir ) { std::vector curves; // Transformation of the coordinate systems gp_Pnt aLowest; - gp_Vec2d aDir; double zmin, zmax; - GetProperties( theProfile, aLowest, aDir, false, zmin, zmax ); + GetProperties( theProfile, aLowest, theDir, false, zmin, zmax ); gp_Ax3 aStd3d( gp_Pnt( 0, 0, 0 ), gp_Dir( 0, 0, 1 ), gp_Dir( 1, 0, 0 ) ); - gp_Ax3 aLocal( aLowest, gp_Dir( 0, 0, 1 ), gp_Dir( aDir.X(), aDir.Y(), 0 ) ); + gp_Ax3 aLocal( aLowest, gp_Dir( 0, 0, 1 ), gp_Dir( theDir.X(), theDir.Y(), 0 ) ); gp_Trsf aTransf; aTransf.SetTransformation( aStd3d, aLocal ); @@ -422,7 +426,8 @@ void HYDROData_DTM::ProfileDiscretization( const Handle_HYDROData_Profile& thePr aUMax = -aUMin, aVMax = 1000000; - std::vector curves = ProfileToParametric( theProfile, aUMin, aUMax ); + gp_Vec2d aProfileDir; + std::vector curves = ProfileToParametric( theProfile, aUMin, aUMax, aProfileDir ); size_t n = curves.size(); if( n==0 ) @@ -442,9 +447,9 @@ void HYDROData_DTM::ProfileDiscretization( const Handle_HYDROData_Profile& thePr curves.push_back( aT2 ); int psize = ( int )( ( theMaxZ-theMinZ ) / theDDZ + 1 ); - theMidPointCurve = CurveUZ( theXCurv ); + theMidPointCurve = CurveUZ( theXCurv, aProfileDir ); theMidPointCurve.reserve( psize ); - theWidthCurve = CurveUZ( theXCurv ); + theWidthCurve = CurveUZ( theXCurv, aProfileDir ); theWidthCurve.reserve( psize ); n = curves.size(); @@ -510,12 +515,11 @@ void HYDROData_DTM::CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxi double aParam = ap.Parameter(); gp_Pnt2d point; - gp_Vec2d tangent, profile_dir; - anAdaptor.D1( aParam, point, tangent ); - profile_dir.SetCoord( tangent.Y(), -tangent.X() ); + anAdaptor.D0( aParam, point ); + gp_Vec2d profile_dir = theMidCurve.ProfileDir(); + gp_Dir tangent_n( -profile_dir.Y(), profile_dir.X(), dz ); profile_dir.Normalize(); - gp_Dir tangent_n( tangent.X(), tangent.Y(), -dz ); - //gp_Dir tangent_n( 0, 0, 1 ); + size_t n = theMidCurve.size(); double min_param = 1E+15; double max_param = -1E+15; @@ -558,7 +562,7 @@ void HYDROData_DTM::CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxi if( theLeft ) { - gp_Pnt2d left2d = point/*.Translated( min_param * profile_dir )*/; + gp_Pnt2d left2d = point.Translated( min_param * profile_dir ); gp_Pnt left( left2d.X(), left2d.Y(), z1 ); theLeft->push_back( left, tangent_n ); } @@ -601,8 +605,8 @@ HYDROData_Bathymetry::AltitudePoints HYDROData_DTM::Interpolate double zmin = max( zminA, zminB ); double zmax = max( zmaxA, zmaxB ); - CurveUZ midA(0), midB(0); - CurveUZ widA(0), widB(0); + CurveUZ midA(0, gp_Vec2d()), midB(0, gp_Vec2d()); + CurveUZ widA(0, gp_Vec2d()), widB(0, gp_Vec2d()); ProfileDiscretization( theProfileA, theXCurvA, zmin, zmax, theDDZ, midA, widA ); ProfileDiscretization( theProfileB, theXCurvB, zmin, zmax, theDDZ, midB, widB ); diff --git a/src/HYDROData/HYDROData_DTM.h b/src/HYDROData/HYDROData_DTM.h index 4a78ed7f..81c3f1bb 100644 --- a/src/HYDROData/HYDROData_DTM.h +++ b/src/HYDROData/HYDROData_DTM.h @@ -75,16 +75,18 @@ public: class CurveUZ : public std::vector { public: - CurveUZ( double theXcurv ); + CurveUZ( double theXcurv, const gp_Vec2d& theProfileDir = gp_Vec2d() ); ~CurveUZ(); double Xcurv() const; + gp_Vec2d ProfileDir() const; CurveUZ operator + ( const CurveUZ& ) const; CurveUZ operator * ( double ) const; private: double myXcurv; + gp_Vec2d myProfileDir; }; class Bank { @@ -111,7 +113,8 @@ protected: std::vector& theDistances ); static std::vector ProfileToParametric( const Handle_HYDROData_Profile& theProfile, - double& theUMin, double& theUMax ); + double& theUMin, double& theUMax, + gp_Vec2d& theDir ); static void GetProperties( const Handle_HYDROData_Profile& theProfile, gp_Pnt& theLowestPoint, gp_Vec2d& theDir, diff --git a/src/HYDRO_tests/reference_data/CMakeLists.txt b/src/HYDRO_tests/reference_data/CMakeLists.txt index a73f805e..5194e06e 100644 --- a/src/HYDRO_tests/reference_data/CMakeLists.txt +++ b/src/HYDRO_tests/reference_data/CMakeLists.txt @@ -111,6 +111,8 @@ SET(REFERENCE_DATA cc_int_w_3.png StreamDlg.png Profiles.xyz + DTM_1.png + DTM_2.png ) # Application tests diff --git a/src/HYDRO_tests/reference_data/DTM_1.png b/src/HYDRO_tests/reference_data/DTM_1.png index e84a2fcaa7429e7231372eb04a545c5ed4265a53..1353db092dbe5a6257ec80c311b712d9f4609d19 100644 GIT binary patch literal 14800 zcmeIZ=T{TX6E6%XMUkc=(h;O9k={Y1Nk@7Q9Vr2&3Iu|JfK=&_Py`|L-lVHYZ$b!2 zkRT-q1OgIjsMp`~{0sNoSKk+N_UxWHGjnEl=FHCS=Yz4KHr-9On`C5UbUM#9OvuP6 zto}zd6#rJluQMe68?FUB(=nr=p;=rp`txskYk#UussC@SP8|Iy|axeiIK=ug==Z$QY5T8tZ*mTZf;4RAgk_e~PY-kGQ!n*vQCE zo?m}J#v}EPk&KZ|jfRXSnddrLj20sW*)u*GaVL^&FkkEu@LoQ+UE$5tV%3(a_^w;ySqImXd_2pVg{h`z$nJbS9qW??_n z8&wV03)`~{`xQr$iF!lx?8o01weNr_zxLlUn8=G52ur=zqj{#pD~b!Yu($Bi3h^Tx7aA_hfv0=2t{z*hHyRGw<+_su z*cxxB#j{JIs}}ABD8huQo6i@mBMUT+%51_u9v`Y3PVHXR@DjHINzy6{o~XmHs>I>o zR0I^Y^MGxImu9b6Cci4*xo#;#+oe6X3(oBymK{{SMi;VR8tXeenf!Y3UYdpVLa%5| z@V1%;pVajS==ta0+H1S_19pBAef2aJB9-hf_kM40av2jwTq;orH0HUXi+@>dDx%Og zqXt1HYGAZp#hY%Il+5!(I><d4e! zhP<5HcI|=rqp2R{Glq|x%qz|LDAj_Z0@d}0XU&LBS5V@x*Hjg6lcw0E3m6njR|;*$tycOP>eD3| z9$LKr)|_92dB_XIbp>u!aqruw9GVv98w5=m3JY^CZF2zB3+|zG6`u{UHzV9VY$bx@ z*5x{cG}icdXq*;h8Z@EGXSBWL0&K8+y|TgixB0Nre8o1oGhs;Lunu~XD3TL@I>Yr5 z6im;U)=CR+O?|Sf(-#d;wd8VS^}A!Z(pfjkv0KIA$E;fA>Pj}L&O;;4?uQF(xd^Q_ zpaizFHgmp6H?#=%uhY%s_E#B!-Ibq@om2229akc9f^wBZffuEMp&1I($Cn~RiIxPd zz8rA??{RjL&f@Mb=l@UMHFoP*KEMevcoLin{Oi_;lX3~B?Ok8+EvvcNn`SZUJ4uku z4gl<6rRjfiTCtXwjz?zLR_Q}HJ}Sm|w75P>_fL@ObIn(gUJPS>&-}`lUhRHipR?Xp zeBkhCSMb9`bOXt!95o_#g679L7!kXEw?8OD1NYbriHnf5&8TLu0-o9Dxo#`2iE}ms zmfj@7iuq`rr8n}DTe69QUWHBV{vcL3V(#m`>Obs4yD0Z@8C)kFOc=tpDvFSzlJ4DlFuVF4j**tSaUXXl4QLjYQx0(Y=9B7gXW^btxO7GObf!S zh{9kpdQkas6c5)zgV45|bg7FcVAZx|EzGN{`7wVgk$vGdX7FME&mXi;7y&v$#&z z7V`XyclDrO`Tjd``9?(T!T^w|M=(qEb*X?!uee#LLiIHjd-^B%=HhF;AL5^P9xk41 z6tzx(Q^UY07iGs|G92sDwVIoU2L%68A_r+ApRzWBs@#OEJ@~I-#cmyz2b$ z0eMFQ6L{BbK}x{elR1#xMBhsCF;B4W;La;{hzivaDK#~c{Ct6lkox?d8~T`;^x$4+nH>xESD-K@QsNYZ<*fMr`?j!m#qMZlzljP~%b<2MMLl z9V)-M-rOd?D<1(20rxB@I)?6fb2lhQCL@XpD$|$#%!&?I{g9&lVRT8J7yQPMByq6& z>QoMyuONi7yTp1q2hn=m zP#aUfm|_ajUM@`+XOH-NESzFu*{%aB|ADr+zB2L4m?Fi%Z;GldwpcGAgQ=q5~VY2kytHmMdwaP2hE)7w=0mM1do`znn3%QavZvuj7W zZwY|ia-d+kIJI|g{vIH%nBHi`Qv8d%@+pnqFP2)Czvk=69y3oqhQ7BdeE@{VBAbEn zj`ehztY%v9jClCASV-ekgnQoM1##K`YY1R*=0*ev$EuY?g*&HKxac^iyrA}Z+&J%l z#H(S3b>m&_hPc`IEfID`-@QPg+zVWesl^=$o3Rj6xf= zZdh@BmJJdq01uhJNo@LVwRm?S2mpdDTB+I`nsn8J38`(XKLsB27mNGNha@` z>3t0~vI%cituiHzm{?3uE@N-*o_Cn8)IQ#nDMARd+D6NxkQW6k)GwJ!S;M25UFRek zy-GYt(tDcO+u*U3k#djo3)4a(#p{`!%Ivlg)y)ArbOES*sW5VQ+W=a9SaN&0hdEcDX z4d|cj?$MkBo4vPd{|Hpl{qYM zmUtvr_0vqRLg(J2${_ok_tH+lmMrgQ_u{Xwyhh1P;k_Wyrhi&*HzX)`9FRV!PMWg! zTMHIRR+)xcm0y<Czcs!h_J;8Y@b=)_65)$exc-zh|xA(mO`x-sbb$NZz&_! zSo>8jRQirG@X~KkpA~8id!>?0L%;PHN^eOK8YEn5E1PO$hNfoARRLGYK5*rbp)27| z)z+Rn~~ppTbCMxcB5(bK0ZntTO9T~cSkO~S`Bqc0s)NlHOU9ppc z<8;fX^K&MD30DzZCdPFUAJcZN9Of)UyWm|F%RJ!*l>zcElUte6b|)zOO6V0pv>Gog z+dXq+44jiB%6NYpfJ`9LL*O=kM`W;g(`;h1*QMd1M$hh{?8XoIjwIREWJsFP5RUT4 za~&Lu6g8WY8!(*sb&}<8VZDd?>y8yVW982r2a^XP!@CnwLt71}cgvN%-foQd3UQr+ z3cZV!wyp*9-j3;~0>m8H)V+fnye+B=kn+T-KHNW#(^TnSD*W5f((~vJSN`CXYO=C- z?}t8HqV-f{8P$j_*I!~I8YkO)1UP%!A?KfCXzC@S{5d~qg(ZIM{K6F)k+$3D4&2~l zCQ?k>e19Br#qySyX5LhgA|)$o^YKa0C4e=LBwMwa+yH%fv*&|F=>Ci2TTLC7e(M@X zzAtdyQ4_FZ%tvlQg!4=ozO_TBALDpQp)gev@#U1R{FS!9>X)dEyBHaB&;|QF>mjXyJ@|m2`gC0*iLx zx{NbGHz|+sl=%hBgw?!(7zE01I9s2{NEq_`ADTP1n zE-IF~z7iFv`80_4Q}_jSUUNgwZ0)HTUjUk#W#6tfOix!@TxF&5Px#b&byKkIY%OOP z3U_@3beVgBT{{B4zL2c4-5I3&iBupp6?#1Xn^JB9k%mIo|D)R~n- zEu0AjY0|uF&4-Iz8d>P*4gJBX`rF+~dj>e*Ge#NI$`c()4z1rLhR7QgkvrM~N{>)m z4LMc8&&Gx~*M6-B*zw`1nn6hZjjCu%kb?s<4qI}%eFhOqh%JhiK9q z`hPik`g7Gqp=mo$?2PSY^7YM>{aJ`F=&J3(<7nzz$xfk6;*k$W>)SLfr-<|y#)IC=z zogB^$BzdbSpCMV9CYT?T+Jqai)1VwEN_r-{N*|dCDw&11{N13hvQzB+rbq3K4Ra(VdgH1N$??AFOaes#rU``rf(2p&Sxx9iE?YUTE}gi#s^? z5OypUzW6(Y;D??X@M=E$qm5Y=SyZ@-WI;ISOp`FFEb$0N#OCZVm;~9?WkDK4H!n%X zY^0OYB$k+rR!Lr6Ppu!n0~@NZ2dG7kmIeyn;@O>g0Mn6Y~< zuPP1Jg{glC`nZp?X94ymY!00tRW9k1Y%U`+)si~!v)i)hx|`E#yB`z7Z~pj3KX6(J zbK7G+yQz`a#f&5`L)#?^J5=B8CVvoZ+@tkFqf7sjf^eh=`4n-toAn~A_hgYg>L0u43w4Hfmy>B>xHTJugy-a4L@b~o*Ev8Lc7rI@mA{kh%`~G zjof@I<8few0r|UEGY(J3ta!|ts`)xHR&)GxmO7%)(%evU>aL#CnX~-6Mi6FI7VnoPl{T2;k)=<90?vo&LX;eiD5nj2 zmk1?u?CQ$pe!|pCYYgK9brY1UooUjW9vlVHLaX=U$FQcm=|<_TnUOKtx1MJWMQzT*F~lll>rT$whny^>d~S0>GRw@M{xqnI7#fL;m^j znaxM4h3YvIB-`0?Z`@DaWzAj>{!hfwF^DM4oY<3k350BOwzfgLwZs&3E4%iWDf&qz71lzu%yV9E6sB%kR`0;lV9#V$ z+RTWm;@UlEaQ^jjugzd8L54=J+4$u@yNDs&tXyZ z_@@e``VE_l&YFoTP;hCJ*|Nw?%NMcsx)Du50mTlv8P$0eY;P>$K$y!@&Ky|W{Kl3w zd9?gfC)yOPFEaO@0hv8>3=)X=&9hyX3AYz8ZV8%}02E-250myq;i5mc`fsOA3M02ZM#CI)F3UNsrD8bmY)~ zbR4Y`56?+N!Vxel?vE zQ?zjbtdfqdR)B`SE>R%vhyoi}hHX z@UkkQ!LQnYXMs7&0F3zZXb$N7<=ow`UeFGi8xfIT{UzM|0-%Yc%I$;`Gnqa+86)2P z9~14{z4dWsZx;HY^Qq&HGKwdO3XpB!7|fv_?0OScf0?$B+DsT;vxYQ@s1d*yb)5N7 ztDN>;WIW1OtRQjV^F{U)@3P9F%ao^d0sYB*w>)redURkl4j**Aj?Ln;ioFW?i-%q7 zP703*Bat^2f*5ng%;2nX2yt{$KX`BFNFt8VaHX!S%P8PEl8e^$GyyOMkUm!kBIIdR zgPMNY(-=_oo+bxwmMK={p(3t}l1`@-FG`Cb0NR>T?Vn8sw9V57O!8hDI$0hT-4n12 zAqD$vhnf_#B>s)Z_^hb0sk)%DtraL_6kC46t2IkFiin(9Ju@X~To|ZIyYaAWt;K0$ z?jEBg2g7|JkdscuJAIZskxXetsB|fH?`HeHzQ1qZJ&E|y!tXMp>)CVr70MdG$R~W% zQZ_v&7Sq;oy(N7LKyEZKQ*hb&c+5UFW0y#yo6D;Dsk;Cpt+}*G%p*CVMOYa-XdsGA62bQRu(j!^?7Gq=CBzYfh-507)vsJzN+A#G^ZE6j8 zaL;8#R*s3c=rxjaYN3UV8Nn>ZkjoGB+c@XG1~cz&oquLHb>dzn0wHwlkH><*G0SXPxX^;1J7};l6Di?F%1d z#*metz2afX38%{kwH3UhGSVFr1$eCb<-Xpa6Y6o-+bp17VeuQu^(vDJ5B{Ua6fSva z5GvfKBDywTXGQ@(E|CO0gEAnW6NBPHQuNoV2Rq`QXMwx=+5ny*Z@SItZ&WEWnA8rv z{-m6`eXg;lS`)O68m`%?0PWOrj>#xvyzLYN^^zF$dWP;Np(ZpjViOCFuAdCtEZ=U3 zAuX1BtlBEA(zUQtehPXaRGAJQ{~UM3WSDb1zZ-99obDs1eD$5}$PAEyb&z z1%%ql0h>D4EUH5O&Q|Am6smAYv5$oM*4erq?PsYP_MZ1icJC8&Nz$b)JDu3>hTxyr zPA-&E(mLaox+tiw6VowSc3v-2g-&dLh)A^$L`flZEF*MottF zOVOGdzxP_yM|02XB7?@x*t(*9@l%cnl+>?2A?vsjbG3xIOa(dh>3W_E_nB|fdTyS= z7gL@Hc4HAtYrY0Ohgz7WTE%4A^QK1}9BekK-7*}5d3PUZg^i5vx`k6g@bcx*`n-98 zBC5ByZ zSSm@X)ZH}_!-0c$vzLUOi{NYc7KdAQa%HYYxyrrHUc+=Im}>D@{k#ToZoiaoo9iVq zr?aD)W$%9fY)@BBQ+y@WSD*e4vDp~rbYu)2TWTKYa#LZ?y{3z-Jf2zqE)eodN}=_= zf~B#97)M(BdpOoO0uGk$a`Y+nx0EKI^GmCU{kpN-&@wmahVUiSz!mPMR`UOTW4R3O zmQB|L&5kZUE^r_J?9O-oaeuZq9W5CeFqY#V(5q)(xp8sc1Iwod8!Z+t-G2@LeV}=k zg}u6zFxIBGz~j5Vd-*OQ;0mm}c2X&T-ay@b*38)ys0_7y zE)hKF)cU5~{|4>rI!xeClckXRG0c3l$+X&;jX5UY?D?b`dpR(7&Z-KkKry)}VcOR<#WHUWu3%RF+YCKrj)-UvctJ3zX+aj706J%bmb7A#72(-&(pn-L$t7OW z3-{tL_&vj}=?+*$xfj70zJqhONlNt^mVlxqPBv%-aPQ#u6Lu!a+*gO*e!5@rz3w+& zDt{9HGr&!dPY3T8?kyH@}EQnEd@Lw_d(Amv)(E z=xP&kz&>6+fd_R|1qa&L!6pa7HZ~LN9@UqM+wj0$!YG|#p=*>Sx046u*gPj&atf-c zGOP50%3uCcs9lXbr9q^NcXR;%c5p;}?93q!%*;IhSi+#sPR|zru$O*ezrBGERtyOv zU&`B^Gz(!Gv5?bKz5J8Q60mviv-c~Kg3?87wZXz{kq5{S_oe0bvtX)6mvf$yoWdAR z**7v=rahaXRig0ABr_MKf+9pkiePAV=q=0FR=e=+<-t2az7q6`i>W_rWnTNTc|-`m_$;SuzJ)dp{sJPJOol|y z+uo;?WpzH?3va^(G#?pFd-EU#zn6ENNf)(x*iVFb{;e5=c%}Z7d1FD%VS&SN>Je%e zoCG~gp_26rL!Xuo&b>#XHkXm`FoXi33DWL}sAjuj#$2Hpizd_X?ro3_gED;EtCo;T zwim6}X1^g%lP;(2IPUw}giL1%V~n!@R;%NB2jrl;ZZ~zO^=+=~CT<^@LyCQuTM}UP zH2a>nB>+Vh|8mFj1g^MP;zH%1xVTbmcF?v>@*cj6Aqm&ABVze!mz@6qFx3$n`vVeH6&<8}_ts zTfy%{p!N58aaM=CC?0kE0Wwr&b>KbZ%Mt|bE{3}==%4O_H!9gP#vEsTdxV;9$s+wg zcPUqo;pPDuI}z1y>2nH%*^so0o}!t$XNGT}+7oxD+D|jyFfcoz0lANh;77C;yTejH zU0%Vv<1fvh6VQ5~^2>xvX6ziql}V>=l~nm05qKqy_X;68&D}r{1c~?cDPMg^HcG;x&!LTLGa9F z=7#zCHU$SXSou)@d2ag1qUQtXChE{Rk~JB>+P*s*@g)?SYjUk3Cs@}5>-N(p;(=h^ z8LcU9K6MtDtBRQ;FFQ77GAyjxeTj&obW4emT5dRBc)Rpk%v(_N#6|6__7f`Ww`Mg7 zJF)t%3^Y|FiFE4Ko4!i3wLQ8Jvej5L=sPQ~BFtbDngfE?3-52CTRQHtgLUvu^|nO^ zR*N&fKTHG2TcsfvWv^=R!%5O)UL`4mY>)2YsHGAIh_H$o^5tv|!s#DA%cRb2lHIuW zw*O#GUBSy~PS%eXtgQ&FH=c`f zYQwKp0S2Lba)OKG_w$-Uw zu+z+MLHC8<0u~mGnCuEfT*@YvSS$S|JN@iE-F?ky?_;#9l1mf= zUZVm}FJaZLiMM3(>Ghxfev+c4>=SV_Azr`ywB?rV>x168Ohr#NgThSD+t#N2{%WDZ z)Tz(W=-dlBDi(TkdC9A)L8ReY`J?%BcF*(ixUVfaOp{`&i+OnC?mtZz2v(d#Bld~h zj8In9<_w2li7!^L_o(GpnSHhYtnEI;v&8NE$-ea@7CYQ`0UH-=1>$0h!lLI9__00T ziRaRIqUQs84{U6bbV*xkWpZU2ST}ar3q@b;$xK&{Z1O;gqfSgP(tddPrhD$T6mqIo z*5zGa)+3-6duy9fI(5hQVoU?_3g7!JOg^GrT6kO4-TZ`*XH^jIX*4}8_vBv7^C5SP z5h%3~Jg_BOB6fIQX&-@^S(gC8(Y;D|s_-+SPSDuaue@NxA=}PMgD$)pG2;Z$?FJL^M47kBLr@59ngzj6`x<#aLByy9<^K(sD|6Y(k9$hvV*!k#HC9ThAsJ|TQ|>n zQ9ltQ&#O1voTNtsScT=9L`s9k|3uAr-o4Ol`{UJ2X3%pBR+G={B7ZS;b$PLT)p|7c zYY2um@~&gSF6u)ZUB0{udC%h4y5Qx}ale~XuoWQlSv(wL6VT`Xnn1kC07R~! z{7LA*51;V?zak&)uV?t|RQ2UCm{-Vb?a!XTnPdDg4V6d2RkZ$?J4VUgK`R1DS1UDr zkq)K`e#NzZ1Kgw;YHQ}1izs~<5I1ER_Tm!P$m+(|1g@A6?WsUI;cl({Yh_HL^AHTr zyw}0u*qWl#0N6%O(J_EzBrimHMS}PpTQV6o2}kp4!km`wiI_;mS=dLhL)8~c8fqy_ zi;5uj4>5a~5EwXmtJ_Q(czEvxyHa~r#8h8t-M(0=bxSA|3G0(b1{lK1O{b9Bz2V6B zp#0M&6$wShQh1Go$tmX3sa)9FVm%^Y?o(%*)wWDY+u`chnp=JnC0^ZU#&fBk#fxS^ z0=0$q(7SiLV$oQKXk#%@#G%xUeO_I$pvIP953ln~d0hkx>&58%e$Kb%G3=^-i%efi zaDFEIMG{Gxu+Bm@`J#Ol6tEmu{)m*~wVz+%8M3fH4N7`rvVOWgcO*RtxH-paomR4p zMa?JBxlSiSaFDK!-em%O3^;iL)TwgVuVK5&>yw|UuxZqO(}rNr?wb0npjd?88PQxa z!;#%pe=?bKHEZyxq}M6iHd*GHxA7L#;Nlvw+KQoBv1vT7_<^3Ev-n(#{q)3+@hpJJ zZKBJ#*6L!k)eGHoUm40***6+NU2OJ&SSxApJwaKJ{zBS$(DJ4^Tfk)pN0wmRY7s8hIChHS4bD)WnnMr|BX^FhvvB>oq zPcMR3naN!PJo|eZensSFN*CzV0qe zw!^)Ri)g0LPY%ba`*231M^i1adap6ptK0n+-NhdTe37O35*xXOX998Yrd!7GO0+{y ztFgi1cfzCf`fO_9p~uDX71hY+UIJOp-A=wA2AlHCe&6(SmD;TGWFG1~OL*nq0sS$a zw}RWYOg)IxtmOaHlv&g!lq3ZN%?_yE3A(-W{H**wP_J6rE}K2&@mZ;7IfX9*MTHz0 z#sBOG(+Rok%}T^K8Fy4U%u+40jv>Id$|>&VkPJw+7?Eh(Q#$#U>mkj6m+s`fI8JU< zspTRJ4k}-uc1;Is(N8eZFeAc!o-u9gt{-C`oTVW{U z)28k-3ixd9=X^ivnZp__M4$7uzH~Co@m{xD`nO^q^%VDc(D3T1v%Z1J|bcSd(1SYshB_nfIJ!vN{jXq~)@ zMtOPZcRmj%x>fbU*7OKoK1!5bM@2od;VnFwZ+F>5$`T;LQ1!& zZ@G=Cy&|u(a-yq|!94*lzh#7V;d4dD@!3}r{tF+|@UOlg154VV3ekGzlT9EJ=249v zyRMf2D4XE0s2>)3v{n8|$(1o-+P1n)rFx&XD}%SDpf-*5tv&wwXKw#d%fs1>`U0ew zNqgvNPXw7vbJ#r~?Cy4*01&%+uxBJ|!E%r5iNx6})aN9lX`I z_3<@;t}V=5T0h?W&SUhaK)&C&n$owEg~i*(Ab=$Q!@5cfzYrG`l)L?yvDy9KqgXV{ zZiMVVc_|?8A3}}zJ?^Q)S~wvW+J>Cn zRmnFKe))JN+b}Gr|42Fm9Uli(DJHVWRiyZ^Y&%?*EJ%niNjEKqGUb#HXOCnP6By^7 z{hDy&)+n_jgstjF=6($Q3i4Nh`QEfhj4-Nsug}k(ZcNuJYFWMKZf(}&Zo(uk7AecQ z;GLh5Ds(;L6LYZ@;-Qw9xl<~A5LUB-^KFSepi)=G?egqLJ;i$`z}E=2yzY8}r^iOM z-WPMElg!y)qUIvh?ZM#7nH`3f(lvwZ=-b7-HA2-NCTZgmge)2Dg0T!uc8Z=IuAd%d z_-8KcAqw#}e?8+ZyZ-u~(TmMp<$Lv>vzMsg3Pc#ch)xpAkpppVOL%m85Vx+peiA_sg42)abrf^1uBqq9KM+<*}U1!(c#DND`U3@ zxgR92l#4I!&^+Tbm3-~7VJlowXCPV7b#8r+xixQAn6a!zOQkzc$_}xystJ^nV)dji zSiS>n?iZUVCLKSj=6li#QMtOEhCS6LPZV5;WLub_>?P88$AJe~EEjYb6jMVSul{h?@ccI-c6o=!q9&FDB8 z1ALtoxB|UrgV@-{DWs`%o`3PG zF}2cKKK|b}4ZIYn&8AK>pj=Ikw`DRE3tH*+N|K@-%Di)Z%dV*|r&`7Gb@K1v2f1xG z|LJPT4nj8w+M9VJ%xbLfWi>VbbwlSR3xF(&Iyk4JjiJ-UIR(}M6)*MR2AWPmfL3|4 z?At#Ldt0=7gm}n&G8n`NhRRY@(-puSYV8aQ-zSvsdGa&)|M;ct8s2!5t_mM~JIetD z+%cUgup6jSopl-5{9iW z3qr29WnlQLX?qs-Zv4{~^2CnEMsi29tHdA@mak(?{>-KJh)U`LgNpniDEL9kCN0ty>D5x8MKd2GkzQ0ys5VF za^B!0@pRJqh7g+LTZ{|58$ z`^&UH(o$1=;oi(F6FdH8n}p>uHQwOkD0MK<(TMG&BL7oYYn^+*#T4^-l)S_Sz(ebC z?ajl1g41uPEJw3HZdBtq*O+WT`x=sXc|+o_j8mJG-b!+=VOJi#ZzT^3gYedtL{R#ak$z|~QKX}o9c&q;aX#YX&{vTrxTOjen ks#m*&{~r&zc6F`5OW05_H09GjOeUF*rlCgNGsk!T2h7zVO#lD@ literal 10414 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 OO6R$uX3bNFnEwMyl5Tqd diff --git a/src/HYDRO_tests/reference_data/DTM_2.png b/src/HYDRO_tests/reference_data/DTM_2.png new file mode 100644 index 0000000000000000000000000000000000000000..02660014bc1017564255e50c4e9c69912d78713c GIT binary patch literal 43889 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
s9M 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 literal 0 HcmV?d00001 diff --git a/src/HYDRO_tests/test_HYDROData_DTM.cxx b/src/HYDRO_tests/test_HYDROData_DTM.cxx index 6659e930..ad4e5f17 100644 --- a/src/HYDRO_tests/test_HYDROData_DTM.cxx +++ b/src/HYDRO_tests/test_HYDROData_DTM.cxx @@ -243,8 +243,9 @@ void test_HYDROData_DTM::test_profile_conversion_to_2d() aUMax1 = -aUMin1, aUMin2 = aUMin1, aUMax2 = aUMax1; - std::vector curves1 = HYDROData_DTM::ProfileToParametric( aProfile1, aUMin1, aUMax1 ); - std::vector curves2 = HYDROData_DTM::ProfileToParametric( aProfile2, aUMin2, aUMax2 ); + gp_Vec2d aProfileDir; + std::vector curves1 = HYDROData_DTM::ProfileToParametric( aProfile1, aUMin1, aUMax1, aProfileDir ); + std::vector curves2 = HYDROData_DTM::ProfileToParametric( aProfile2, aUMin2, aUMax2, aProfileDir ); gp_Pnt2d aFirst, aLast; CPPUNIT_ASSERT_EQUAL( 3, (int)curves1.size() ); @@ -346,7 +347,7 @@ void test_HYDROData_DTM::test_profile_discretization_polyline() CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, aMid[1].Z, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.215, aMid[5].U, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.5, aMid[5].Z, EPS ); - CPPUNIT_ASSERT_DOUBLES_EQUAL( -0.589, aMid[10].U, EPS ); + CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.768, aMid[10].U, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 5.0, aMid[10].Z, EPS ); CPPUNIT_ASSERT_EQUAL( 11, (int)aWid.size() ); @@ -383,7 +384,7 @@ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, aMid[1].Z, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.473, aMid[5].U, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.5, aMid[5].Z, EPS ); - CPPUNIT_ASSERT_DOUBLES_EQUAL( -0.589, aMid[10].U, EPS ); + CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.768, aMid[10].U, EPS ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 5.0, aMid[10].Z, EPS ); CPPUNIT_ASSERT_EQUAL( 11, (int)aWid.size() ); @@ -495,19 +496,19 @@ void test_HYDROData_DTM::test_curve_to_3d() Handle_Geom2d_BSplineCurve HA = HYDROData_DTM::CreateHydraulicAxis( profiles, distances ); HYDROData_DTM::AltitudePoints points; - HYDROData_DTM::CurveUZ mid( 5.0 ); + HYDROData_DTM::CurveUZ mid( 5.0, gp_Vec2d(-10,10) ); mid.push_back( HYDROData_DTM::PointUZ( 0, 5 ) ); mid.push_back( HYDROData_DTM::PointUZ( 1, 6 ) ); - HYDROData_DTM::CurveUZ wid( 5.0 ); + HYDROData_DTM::CurveUZ wid( 5.0, gp_Vec2d(-10,10) ); wid.push_back( HYDROData_DTM::PointUZ( 2, 5 ) ); wid.push_back( HYDROData_DTM::PointUZ( 6, 6 ) ); HYDROData_DTM::CurveTo3D( HA, mid, wid, points ); CPPUNIT_ASSERT_EQUAL( 4, (int)points.size() ); - CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.434, -0.598, 5.0 ), points[0] ); - CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 14.497, -0.947, 5.0 ), points[1] ); - CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.903, -0.423, 6.0 ), points[2] ); - CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 13.092, -1.471, 6.0 ), points[3] ); + CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.673, -1.479, 5.0 ), points[0] ); + CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 14.259, -0.065, 5.0 ), points[1] ); + CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 16.380, -2.186, 6.0 ), points[2] ); + CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 12.137, 2.056, 6.0 ), points[3] ); aDoc->Close(); } @@ -544,7 +545,7 @@ void test_HYDROData_DTM::test_presentation() CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS ); DTM->Update(); - CPPUNIT_ASSERT_EQUAL( 10200, (int)DTM->GetAltitudePoints().size() ); + CPPUNIT_ASSERT_EQUAL( 10098, (int)DTM->GetAltitudePoints().size() ); Handle_AIS_InteractiveContext aContext = TestViewer::context(); HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM ); @@ -597,7 +598,7 @@ void test_HYDROData_DTM::test_garonne() CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS ); DTM->Update(); - CPPUNIT_ASSERT_EQUAL( 282336, (int)DTM->GetAltitudePoints().size() ); + CPPUNIT_ASSERT_EQUAL( 277158, (int)DTM->GetAltitudePoints().size() ); Handle_AIS_InteractiveContext aContext = TestViewer::context(); HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM ); -- 2.39.2