LCOV - code coverage report
Current view: top level - geom/virtual/cgm - CompositeCurve.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 0 23 0.0 %
Date: 2020-06-30 00:58:45 Functions: 0 11 0.0 %
Branches: 0 10 0.0 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : CompositeCurve.hpp
       3                 :            : //
       4                 :            : // Purpose       : Geometry defined as the joining of a chain of curves.
       5                 :            : //
       6                 :            : // Special Notes : 
       7                 :            : //
       8                 :            : // Creator       : Jason Kraftcheck
       9                 :            : //
      10                 :            : // Creation Date : 12/19/01
      11                 :            : //-------------------------------------------------------------------------
      12                 :            : 
      13                 :            : #ifndef COMPOSITE_CURVE_HPP
      14                 :            : #define COMPOSITE_CURVE_HPP
      15                 :            : 
      16                 :            : #include "VGDefines.h"
      17                 :            : #include "Curve.hpp"
      18                 :            : #include "CompositeGeom.hpp"
      19                 :            : #include "HiddenEntitySet.hpp"
      20                 :            : #include "CompositeCoEdge.hpp"
      21                 :            : 
      22                 :            : class CompositeSurface;
      23                 :            : class CompositePoint;
      24                 :            : class TBPoint;
      25                 :            : 
      26                 :            : class CompositeCurve : public Curve, public TBOwner
      27                 :            : {
      28                 :            : 
      29                 :            :   public:
      30                 :            :   
      31                 :            :     int HadBridgeRemoved;
      32                 :            :     //CompositeCurve( DLIList<Curve*>& curve_list, bool periodic );
      33                 :            :     //CompositeCurve( );
      34                 :            :     CompositeCurve( Curve* curve );
      35                 :            :     CompositeCurve( CompositeGeom* geometry );
      36                 :            :     CompositeCurve( CompositePoint* point ); // create point-curve
      37                 :            :     
      38                 :            :     virtual ~CompositeCurve();
      39                 :            :    
      40                 :            :     inline Curve* get_curve( int index ) const;
      41                 :            :     inline CubitSense get_sense( int index ) const;
      42                 :            :     inline int num_curves( ) const;
      43                 :            :     inline int index_of( Curve* curve_ptr ) const;
      44                 :            :     inline void update();
      45                 :            :     Curve* remove_curve( int index );
      46                 :            :     
      47                 :            : /*
      48                 :            :     inline CubitStatus append_curve( Curve* curve_ptr );
      49                 :            :     inline CubitStatus prepend_curve( Curve* curve_ptr );
      50                 :            :     CubitStatus insert_curve( Curve* curve_ptr, int index );
      51                 :            :     Curve* remove_curve( Curve* curve_ptr );
      52                 :            :     Curve* remove_curve( int index );
      53                 :            : */
      54                 :            :     CompositeCurve* split( Curve* curve_ptr );
      55                 :            :     CubitStatus combine( CompositeCurve* curve_ptr, bool prepend );
      56                 :            :     void reverse();
      57                 :            :     
      58                 :            :     CompositeCoEdge* first_coedge() const;
      59                 :            :     CompositeCoEdge* next_coedge( CompositeCoEdge* after_this ) const;
      60                 :            :     CubitStatus add( CompositeCoEdge* coedge );
      61                 :            :     CubitStatus remove( CompositeCoEdge* coedge );
      62                 :            :     
      63                 :            :     CompositePoint* start_point() const;
      64                 :            :     CompositePoint* end_point() const;
      65                 :            :     CubitStatus start_point( CompositePoint* pt );
      66                 :            :     CubitStatus end_point( CompositePoint* pt );
      67                 :            :     CompositePoint* other_point( CompositePoint* pt );
      68                 :            :     CompositePoint* common_point( CompositeCurve* curve );
      69                 :            :     CompositeCurve* next( const CompositePoint* around_this );
      70                 :            : 
      71                 :            :     HiddenEntitySet& hidden_entities();
      72                 :            :     void get_hidden_points( DLIList<TBPoint*>& points );
      73                 :            :     
      74                 :            :     bool has_parent_composite_surface() const;
      75                 :            :     
      76                 :            :     /**************** Methods from TopologyBridge *******************/
      77                 :            :     
      78                 :            :     void append_simple_attribute_virt( const CubitSimpleAttrib& csa );
      79                 :            :     void remove_simple_attribute_virt(const CubitSimpleAttrib& csa );
      80                 :            :     void remove_all_simple_attribute_virt();
      81                 :            :     CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>& csa_list );
      82                 :            :     CubitStatus get_simple_attribute( const CubitString& name,
      83                 :            :                                   DLIList<CubitSimpleAttrib>& attrib_list );
      84                 :            :     GeometryQueryEngine* get_geometry_query_engine() const;
      85                 :            :     
      86                 :            :     void get_parents_virt( DLIList<TopologyBridge*>& parents );
      87                 :            :     void get_children_virt( DLIList<TopologyBridge*>& children );
      88                 :          0 :     int layer() const { return COMPOSITE_LAYER; }
      89                 :            : 
      90                 :            :     /******************** Methods from TBOwner **********************/
      91                 :            :    
      92                 :            :     CubitStatus remove_bridge( TopologyBridge* bridge );
      93                 :            :     CubitStatus swap_bridge( TopologyBridge* old, 
      94                 :            :                              TopologyBridge* neww, 
      95                 :            :                              bool reversed );
      96                 :            :     CubitBoolean contains_bridge( TopologyBridge* bridge ) const;
      97                 :            :     void notify_reversed( TopologyBridge* bridge );
      98                 :            :     void notify_split( TopologyBridge* new_bridge, TopologyBridge* split_from );
      99                 :            : //    void notify_joined( TopologyBridge* dead, TopologyBridge* keep );
     100                 :            : 
     101                 :            :     /**************** Methods from GeometryEntity *******************/
     102                 :            : 
     103                 :            :           CubitBox bounding_box() const;
     104                 :            :     double measure( ) ;
     105                 :            :     GeometryType geometry_type();
     106                 :            :     
     107                 :            : 
     108                 :            :     /******************** Methods from Curve ***********************/
     109                 :            : 
     110                 :            :     CubitBoolean get_param_range( double& lower, double& upper );
     111                 :            :     CubitBoolean is_periodic( double& period);
     112                 :            :     double start_param();
     113                 :            :     double end_param();
     114                 :            : 
     115                 :            :     CubitStatus position_from_u( double u_value, CubitVector& pos );
     116                 :            :     double u_from_position (const CubitVector& input_position);
     117                 :            : 
     118                 :            :     double length_from_u( double parameter1, double parameter2 );
     119                 :            :     double u_from_arc_length ( double root_param, double arc_length );
     120                 :            : 
     121                 :            :     CubitStatus closest_point( CubitVector const& location, 
     122                 :            :                                CubitVector& closest_location,
     123                 :            :                                CubitVector* tangent_ptr = NULL,
     124                 :            :                                CubitVector* curvature_ptr = NULL,
     125                 :            :                                double *param = NULL);
     126                 :            : 
     127                 :            :     CubitStatus closest_point_trimmed( CubitVector const& from_pt,
     128                 :            :                                            CubitVector& result_pt );
     129                 :            : 
     130                 :            :     CubitBoolean is_position_on( const CubitVector &test_position );
     131                 :            :     CubitPointContainment point_containment( const CubitVector &point );
     132                 :            : 
     133                 :            :     CubitStatus get_point_direction( CubitVector& origin,
     134                 :            :                                            CubitVector& direction );
     135                 :            : 
     136                 :            :     CubitStatus get_interior_extrema( 
     137                 :            :                             DLIList<CubitVector*>& interior_points,
     138                 :            :                             CubitSense& return_sense);
     139                 :            : 
     140                 :            :     CubitStatus get_center_radius( CubitVector& c, double& r );
     141                 :            : 
     142                 :            :     CubitBoolean G1_discontinuous( double param,
     143                 :            :                 CubitVector* minus_tangent = NULL,
     144                 :            :                 CubitVector* plus_tangent = NULL );
     145                 :            : 
     146                 :            : 
     147                 :            :     void print_debug_info( const char* prefix = 0, bool brief = false ) const;
     148                 :            : 
     149                 :            :     CubitStatus stitch( CompositeCurve* merge_with );
     150                 :            :     void unstitch_all();
     151                 :            :     CompositeCurve* primary_stitched_curve();
     152                 :            :     bool is_stitched();
     153                 :            :     void get_stitched( DLIList<CompositeCurve*>& list );
     154                 :            : 
     155                 :            :     CubitStatus curve_param( double u_composite, double& u_curve, int& index ) const;
     156                 :            :           double composite_param( int index, double param ) const;
     157                 :            :     
     158                 :            :     //void draw( int color );
     159                 :            :   
     160                 :            :     void read_attributes() ; //{ compGeom->read_attributes(); }
     161                 :            :     void write_attributes() ; //{ compGeom->write_attributes(); }
     162                 :            : 
     163                 :            :   //R CubitStatus
     164                 :            :   //O- true or false if spline is rational or not.
     165                 :            :   //O- the degree of this spline
     166                 :            :   //O- the control points
     167                 :            :   //O- If rational, weight for each control point
     168                 :            :   //O- whether underlying spline is reversed
     169                 :            :   virtual CubitStatus get_spline_params( bool &rational,
     170                 :            :                                          int &degree,
     171                 :            :                                          DLIList<CubitVector> &cntrl_pts,
     172                 :            :                                          DLIList<double> &cntrl_pt_weights,
     173                 :            :                                          DLIList<double> &knots,
     174                 :            :                                          bool &spline_is_reversed
     175                 :            :                                        ) const;
     176                 :            :     //R CubitStatus
     177                 :            :     //O- center - ellipse center point
     178                 :            :     //O- normal - normal of the plane of the ellipse
     179                 :            :     //O- major_axis - major axis of the ellipse
     180                 :            :     //O- radius_ratio - ratio of the length of the major to minor axis.
     181                 :            :   virtual CubitStatus get_ellipse_params( CubitVector &center,
     182                 :            :                                           CubitVector &normal,
     183                 :            :                                           CubitVector &major_axis,
     184                 :            :                                           double &radius_ratio ) const;
     185                 :            : 
     186                 :            :   protected: 
     187                 :            :   
     188                 :            :     CompositeCurve();
     189                 :            : 
     190                 :            :     int closest_curve( CubitVector const& location,
     191                 :            :                        CubitVector *point = NULL );
     192                 :            :     //R int
     193                 :            :     //R- The index of the closest curve
     194                 :            :     //I location
     195                 :            :     //I- A position for which the closest curve is desired.
     196                 :            :     //O point
     197                 :            :     //O- The closest point on the curve
     198                 :            :     //- This function finds the closest underlying Curve of this 
     199                 :            :     //- CompositeCurve to a given point
     200                 :            :   
     201                 :            :           double lengthUntilI( int index ) const;
     202                 :            :   
     203                 :            :     void fixup_periodic_param( double& u ) const;
     204                 :            :     
     205                 :            :     CubitStatus set_point( bool set_start_point, CompositePoint* point );
     206                 :            : 
     207                 :            : private:
     208                 :            : 
     209                 :            :       // these have no implementation, just private delcarations
     210                 :            :       // to prevent the compiler from generating default implementations
     211                 :            :     CompositeCurve& operator=(const CompositeCurve&);
     212                 :            :     CompositeCurve(const CompositeCurve&);
     213                 :            : 
     214                 :            :     CompositeGeom* compGeom;
     215                 :            :     
     216                 :            :     HiddenEntitySet* hiddenSet;
     217                 :            :     
     218                 :            :     CompositeCoEdge* firstCoEdge;
     219                 :            :     
     220                 :            :     CompositePoint* startPoint;
     221                 :            :     CompositePoint* endPoint;
     222                 :            :     
     223                 :            :     CompositeCurve* startNext;
     224                 :            :     CompositeCurve* endNext;
     225                 :            :     
     226                 :            :     CompositeCurve* stitchNext;
     227                 :            : };
     228                 :            : 
     229                 :          0 : inline Curve* CompositeCurve::get_curve( int index ) const
     230         [ #  # ]:          0 :   { return dynamic_cast<Curve*>(compGeom->entity(index)); }
     231                 :            : 
     232                 :          0 : inline CubitSense CompositeCurve::get_sense( int index ) const
     233                 :          0 :   { return compGeom->sense( index ); }
     234                 :            : 
     235                 :          0 : inline int CompositeCurve::num_curves( ) const
     236                 :          0 :   { return compGeom->num_entities(); }
     237                 :            : 
     238                 :          0 : inline int CompositeCurve::index_of( Curve* curve ) const
     239                 :          0 :   { return compGeom->index_of( curve ); }
     240                 :            : 
     241                 :          0 : inline void CompositeCurve::update()
     242                 :          0 :   { compGeom->update_cached_data();}
     243                 :            : 
     244                 :            : /*
     245                 :            : inline CubitStatus CompositeCurve::prepend_curve( Curve* curve )
     246                 :            :   { return insert_curve( curve, 0 ); }
     247                 :            : 
     248                 :            : inline CubitStatus CompositeCurve::append_curve( Curve* curve )
     249                 :            :   { return insert_curve( curve, num_curves() ); }
     250                 :            : */
     251                 :          0 : inline CompositeCoEdge* CompositeCurve::first_coedge( ) const
     252                 :          0 :   { return firstCoEdge; }
     253                 :            : 
     254                 :          0 : inline CompositeCoEdge* CompositeCurve::next_coedge( CompositeCoEdge* coedge ) const
     255 [ #  # ][ #  # ]:          0 :   { return !coedge ? firstCoEdge : coedge->myCurve == this ? coedge->nextOnCurve : 0; }
     256                 :            : 
     257                 :          0 : inline CompositePoint* CompositeCurve::start_point() const
     258                 :          0 :   { return startPoint; }
     259                 :            : 
     260                 :          0 : inline CompositePoint* CompositeCurve::end_point() const
     261                 :          0 :   { return endPoint; }
     262                 :            : 
     263                 :            : 
     264                 :            : 
     265                 :          0 : inline HiddenEntitySet& CompositeCurve::hidden_entities()
     266         [ #  # ]:          0 :   { if( !hiddenSet ) 
     267         [ #  # ]:          0 :       hiddenSet = new HiddenEntitySet(this);
     268                 :          0 :     return *hiddenSet; 
     269                 :            :   }
     270                 :            : 
     271                 :            : 
     272                 :            : #endif

Generated by: LCOV version 1.11