00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef INC_GRE_3DGMELEM_H
00042 #define INC_GRE_3DGMELEM_H
00043
00044 #ifndef INC_GRE_3DUTILS_H
00045 #include <gre/3dutils.h>
00046 #endif
00047
00048 #ifndef INC_GRE_3DSCENE_H
00049 #include <gre/3dscene.h>
00050 #endif
00051
00052 #ifndef INC_GRE_3DPNTFLD_H
00053 #include <gre/3dpntfld.h>
00054 #endif
00055
00056 #ifndef INC_MI32_TRIANGULATOR_H
00057 #include <mi32/triangulator.h>
00058 #endif
00059
00060 #ifndef INC_MI32_MG2ENUMS_H
00061 #include <mi32/mg2enums.h>
00062 #endif
00063
00064 #ifndef INC_RVC_VECTOR_H
00065 #include <rvc/vector.h>
00066 #endif
00067
00068
00069 #ifndef GENERATING_DOXYGEN_OUTPUT
00070
00071 class REGION2D;
00072 class SUBREGION2D;
00073 class LABELSTYLE;
00074 namespace RVC {
00075 class STYLE;
00076 class STYLEPATTERN_BITMAP;
00077 class STYLEPATTERN_HATCH;
00078 class STYLEPATTERN_LINE;
00079 class STYLEPATTERN_SYMBOL;
00080 }
00081 namespace GRE {
00082 struct TRIANGULATION;
00083 class TERRAIN;
00084 class LABELPLACE;
00085 }
00086 #endif
00087
00088
00089 namespace GRE {
00090
00091 class GEOMETRIC3D_BUILDER {
00092 public:
00093
00094 enum ELEMMODE {
00095 ELEMMODE_Standard,
00096 ELEMMODE_Highlighted,
00097 ELEMMODE_Active
00098 };
00099
00100 ERRVALUE DrawPoint2D (
00101 const DPOINT2D& point,
00102 const POINTSTYLE& style
00103 );
00104
00105 ERRVALUE DrawLabel2D (
00106 const RVC::VECTOR::LABEL& label,
00107 const LABELSTYLE& style
00108 );
00109
00110 ERRVALUE DrawPoint3D (
00111 const DPOINT3D& point,
00112 const POINTSTYLE& style
00113 );
00114
00115 ERRVALUE DrawLine2D (
00116 const POLYLINE& polyline,
00117 const LINESTYLE& style,
00118 const RVC::STYLEPATTERN_LINE& pattern
00119 );
00120
00121 ERRVALUE DrawLine3D (
00122 const POLYLINE& polyline,
00123 const LINESTYLE& style
00124 );
00125
00126 ERRVALUE DrawRectangle2D (
00127 const DRECT2D& rect,
00128 const LINESTYLE& style,
00129 const RVC::STYLEPATTERN_LINE& pattern
00130 );
00131
00132 ERRVALUE DrawCircle2D (
00133 const DPOINT2D& center,
00134 const double radius,
00135 const LINESTYLE& style,
00136 const RVC::STYLEPATTERN_LINE& pattern
00137 );
00138
00139 ERRVALUE DrawPolygon2D (
00140 const POLYLINE& polyline,
00141 const POLYSTYLE& style
00142
00143 );
00144
00145 ERRVALUE DrawSubRegion2D (
00146 const SUBREGION2D& subregion,
00147 const POLYSTYLE& style
00148
00149 );
00150
00151 ERRVALUE DrawRegion2D (
00152 const REGION2D& region,
00153 const POLYSTYLE& style
00154
00155 );
00156
00157 ERRVALUE FillPoint2D (
00158 const DPOINT2D& point,
00159 const POINTSTYLE& style,
00160 const RVC::STYLEPATTERN_SYMBOL& pattern
00161 );
00162
00163 ERRVALUE FillLabel2D (
00164 const RVC::VECTOR::LABEL& label,
00165 const LABELSTYLE& style,
00166 const RVC::STYLE& styleobj
00167 );
00168
00169 ERRVALUE FillLabel2D (
00170 const GRE::LABELPLACE& labelplace,
00171 const RVC::STYLE& styleobj
00172 );
00173
00174 ERRVALUE FillLabel2D (
00175 const MIUNICODE* text,
00176 const POLYLINE& base,
00177 const LABELSTYLE& style,
00178 const POLYLINELIST& leaders,
00179 const RVC::STYLE& styleobj
00180 );
00181
00182 ERRVALUE FillPoint3D (
00183 const DPOINT3D& point,
00184 const POINTSTYLE& style
00185 );
00186
00187 ERRVALUE FillLine2D (
00188 const POLYLINE& polyline,
00189 const LINESTYLE& style,
00190 const RVC::STYLEPATTERN_LINE& pattern,
00191 const MGD::LINECAP linecap = MGD::LINECAP_Butt
00192 );
00193
00194 ERRVALUE FillLine3D (
00195 const POLYLINE& polyline,
00196 const LINESTYLE& style
00197 );
00198
00199 ERRVALUE FillRectangle2D (
00200 const DRECT2D& rect,
00201 const POLYSTYLE& style,
00202 const RVC::STYLE& styleobj
00203 );
00204
00205 ERRVALUE FillCircle2D (
00206 const DPOINT2D& center,
00207 const double radius,
00208 const POLYSTYLE& style,
00209 const RVC::STYLE& styleobj
00210 );
00211
00212 ERRVALUE FillPolygon2D (
00213 const POLYLINE& polyline,
00214 const POLYSTYLE& style,
00215 const RVC::STYLE& styleobj
00216 );
00217
00218 ERRVALUE FillSubRegion2D (
00219 const SUBREGION2D& subregion,
00220 const POLYSTYLE& style,
00221 const RVC::STYLE& styleobj
00222 );
00223
00224 ERRVALUE FillRegion2D (
00225 const REGION2D& region,
00226 const POLYSTYLE& style,
00227 const RVC::STYLE& styleobj
00228 );
00229
00230 double GetFactor (
00231 ) { return m_SF; }
00232
00233
00234 ERRVALUE Init (
00235 GRE::SCENE3D* scene,
00236 GRE::TERRAIN* terrain,
00237 const double s2d
00238 );
00239
00240 void Clear (
00241 ) {
00242 m_Scene = 0;
00243 m_Terrain = 0;
00244 }
00245
00246 void SetHighlightedColor (
00247 const COLOR color
00248 ) { m_HighlightedColor = color; }
00249
00250 void SetActiveColor (
00251 const COLOR color
00252 ) { m_ActiveColor = color; }
00253
00254 void SetElementsMode (
00255 const ELEMMODE mode
00256 ) { m_ElementsMode = mode; }
00257
00258 void Translate (
00259 const DPOINT2D& input,
00260 const DPOINT2D& offset,
00261 const double mapscale,
00262 DPOINT2D& output
00263 );
00264
00265 protected:
00266
00267 GEOMETRIC3D_BUILDER () {}
00268 virtual ~GEOMETRIC3D_BUILDER () {}
00269
00270 private:
00271 #ifndef GENERATING_DOXYGEN_OUTPUT
00272
00273 static bool Intersect (
00274 const FPOINT2D& ps,
00275 const FPOINT2D& pe,
00276 const FPOINT2D& qs,
00277 const FPOINT2D& qe,
00278 FPOINT2D& p
00279 );
00280
00281 static const INT32 s_IcosahedronNumVertices = 12;
00282 static const INT32 s_IcosahedronNumTriangles = 20;
00283 static const float s_IcosahedronTriangleArea;
00284
00285 static const FPOINT3D s_IcosahedronVertices[12];
00286 static const GRE::TRIANGLEINDEX s_IcosahedronTriangles[20];
00287
00288 static const double s_FScale;
00289 static const double s_FXOffset;
00290 static const double s_FYOffset;
00291
00292 GRE::SCENE3D* m_Scene;
00293 GRE::TERRAIN* m_Terrain;
00294 DPOINT3D m_Direction;
00295 DPOINT3D m_Viewer;
00296 ELEMMODE m_ElementsMode;
00297 COLOR m_HighlightedColor;
00298 COLOR m_ActiveColor;
00299 FPOINT3D m_SunDirection;
00300
00301 SIMPLE_ARRAY<FPOINT3D> m_Points;
00302 POLYLINE m_Polyline;
00303 POLYLINE m_PolylineE;
00304 SIMPLE_ARRAY<double> m_Offset;
00305 GRE::TRIANGULATION m_Triangulation;
00306 GRE::PIXALIZATION m_Pixalization;
00307 TRIANGULATOR m_Triangulator;
00308 DOUBLE_ARRAY<DTRIANGLE2D> m_Triangles;
00309
00310 double m_S2D;
00311 double m_S3D;
00312 double m_SF;
00313
00314 virtual void OnConstruction (
00315 GRE::TRIANGULATION& triangulation
00316 ) = 0;
00317
00318 virtual void OnConstruction (
00319 GRE::PIXALIZATION& pixalization
00320 ) = 0;
00321
00322 ERRVALUE DrawSegment2D (
00323 const FPOINT2D& pt1,
00324 const FPOINT2D& pt2,
00325 const COLOR& color
00326 );
00327
00328 ERRVALUE OutlinePolygon2D (
00329 const POLYLINE& polyline,
00330 const float thickness,
00331 const COLOR& color,
00332 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00333 );
00334
00335 ERRVALUE OutlineSubRegion2D (
00336 const SUBREGION2D& subregion,
00337 const float thickness,
00338 const COLOR& color,
00339 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00340 );
00341
00342 ERRVALUE OutlineRegion2D (
00343 const REGION2D& region,
00344 const float thickness,
00345 const COLOR& color,
00346 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00347 );
00348
00349 ERRVALUE FillPoint2DBuildIn (
00350 const DPOINT2D& point,
00351 const POINTSTYLE& style
00352 );
00353
00354 ERRVALUE FillPoint2DUseSymbol (
00355 const DPOINT2D& point,
00356 const POINTSTYLE& style,
00357 const RVC::STYLEPATTERN_SYMBOL& pattern
00358 );
00359
00360 ERRVALUE FillPoint3DBuildIn (
00361 const DPOINT3D& point,
00362 const POINTSTYLE& style
00363 );
00364
00365 ERRVALUE FillPoint3DUseSymbol (
00366 const DPOINT3D& point,
00367 const POINTSTYLE& style
00368 );
00369
00370 ERRVALUE FillLine2DSolid (
00371 const POLYLINE& polyline,
00372 const LINESTYLE& style,
00373 const MGD::LINECAP linecap = MGD::LINECAP_Round
00374 );
00375
00376 ERRVALUE FillLine2DSolid (
00377 const POLYLINE& polyline,
00378 const float thickness,
00379 const COLOR& color,
00380 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round,
00381 const MGD::LINECAP linecap = MGD::LINECAP_Round
00382 );
00383
00384
00385 ERRVALUE FillLine2DUsePattern (
00386 const POLYLINE& polyline,
00387 const LINESTYLE& style,
00388 const RVC::STYLEPATTERN_LINE& pattern
00389 );
00390
00391 ERRVALUE FillLine3DSolid (
00392 const POLYLINE& polyline,
00393 const LINESTYLE& style
00394 );
00395
00396 ERRVALUE FillLine3DUsePattern (
00397 const POLYLINE& polyline,
00398 const LINESTYLE& style
00399 );
00400
00401 ERRVALUE FillTriangle2D (
00402 const FPOINT2D& pt1,
00403 const FPOINT2D& pt2,
00404 const FPOINT2D& pt3,
00405 const COLOR& color
00406 );
00407
00408 ERRVALUE FillTriangle2D (
00409 const FPOINT2D& pt1,
00410 const FPOINT2D& pt2,
00411 const FPOINT2D& pt3,
00412 const COLOR& color,
00413 const RVC::STYLEPATTERN_BITMAP& pattern
00414 );
00415
00416 ERRVALUE FillRectangle2D (
00417 const DRECT2D& rectangle,
00418 const COLOR& color
00419 );
00420
00421 ERRVALUE FillTriangle3D (
00422 const FPOINT3D& pt1,
00423 const FPOINT3D& pt2,
00424 const FPOINT3D& pt3,
00425 const COLOR& color
00426 );
00427
00428 ERRVALUE DrawCircle2D (
00429 const FPOINT2D& point,
00430 const float radius,
00431 const float thickness,
00432 const COLOR& color
00433 );
00434
00435 ERRVALUE DrawArc2D (
00436 const FPOINT2D& point,
00437 const float radius,
00438 const float thickness,
00439 const float start,
00440 const float sweep,
00441 const COLOR& color,
00442 const MGD::SHAPECLOSE shapeclose = MGD::SHAPECLOSE_None
00443 );
00444
00445 ERRVALUE DrawEllipse2D (
00446 const FPOINT2D& point,
00447 const float x,
00448 const float y,
00449 const float thickness,
00450 const float rotation,
00451 const COLOR& color
00452 );
00453
00454 ERRVALUE FillCircle2D (
00455 const FPOINT2D& point,
00456 const float radius,
00457 const COLOR& color
00458 );
00459
00460 ERRVALUE FillArcWedge2D (
00461 const FPOINT2D& point,
00462 const float radius,
00463 const float start,
00464 const float sweep,
00465 const COLOR& color
00466 );
00467
00468 ERRVALUE FillArcChord2D (
00469 const FPOINT2D& point,
00470 const float radius,
00471 const float start,
00472 const float sweep,
00473 const COLOR& color
00474 );
00475
00476 ERRVALUE FillArcChord(
00477 const FPOINT2D& point1,
00478 const FPOINT2D& point2,
00479 const FPOINT2D& center,
00480 const float radius,
00481 const COLOR& color
00482 );
00483
00484 ERRVALUE FillEllipse2D (
00485 const FPOINT2D& point,
00486 const float x,
00487 const float y,
00488 const float rotation,
00489 const COLOR& color
00490 );
00491
00492 ERRVALUE FillSphericalTriangle3D (
00493 const FPOINT3D& center,
00494 const float radius,
00495 const INT32 depth,
00496 const FPOINT3D& pt1,
00497 const FPOINT3D& pt2,
00498 const FPOINT3D& pt3,
00499 const COLOR& color
00500 );
00501
00502 ERRVALUE FillSphere3D (
00503 const FPOINT3D& center,
00504 const float radius,
00505 const COLOR& color
00506 );
00507
00508 ERRVALUE FillCube3D (
00509 const FPOINT3D& center,
00510 const float x,
00511 const float y,
00512 const float z,
00513 const COLOR& color
00514 );
00515
00516 ERRVALUE FillCylindricalRectangle3D (
00517 const FPOINT3D& scenter,
00518 const float sradius,
00519 const FPOINT3D& ecenter,
00520 const float eradius,
00521 const FPOINT3D& n1,
00522 const FPOINT3D& n2,
00523 const INT32 depth,
00524 const COLOR& color
00525 );
00526
00527 ERRVALUE FillCylinder3D (
00528 const FPOINT3D& scenter,
00529 const float sradius,
00530 const FPOINT3D& ecenter,
00531 const float eradius,
00532 const COLOR& color
00533 );
00534
00535 ERRVALUE FillTriangles2DSolid (
00536 const DOUBLE_ARRAY<DTRIANGLE2D>& triangles,
00537 const COLOR& color
00538 );
00539
00540 ERRVALUE FillTriangles2DUseBitmap (
00541 const DOUBLE_ARRAY<DTRIANGLE2D>& triangles,
00542 const POLYSTYLE& style,
00543 const RVC::STYLEPATTERN_BITMAP& pattern
00544 );
00545
00546 DRECT2D ComputeExtents (
00547 const DOUBLE_ARRAY<DTRIANGLE2D>& triangles
00548 );
00549
00550 ERRVALUE FillRectangle2DUseHatch (
00551 const DRECT2D& extents,
00552 const POLYSTYLE& style,
00553 const RVC::STYLEPATTERN_HATCH& pattern
00554 );
00555
00556 ERRVALUE FillBorder2DSolid (
00557 const POLYLINE& polyline,
00558 const POLYSTYLE& style
00559 );
00560
00561 ERRVALUE FillBorder2DSolid (
00562 const POLYLINE& polyline,
00563 const float thickness,
00564 const COLOR& color,
00565 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00566 );
00567
00568 ERRVALUE FillBorder2DUsePattern (
00569 const POLYLINE& polyline,
00570 const POLYSTYLE& style,
00571 const RVC::STYLEPATTERN_LINE& pattern
00572 );
00573
00574 ERRVALUE FillPolygon2D (
00575 const POLYLINE& polyline,
00576 const bool fill,
00577 const float thickness,
00578 const COLOR& color,
00579 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00580 );
00581
00582 ERRVALUE FillSubRegion2D (
00583 const SUBREGION2D& subregion,
00584 const bool fill,
00585 const float thickness,
00586 const COLOR& color,
00587 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00588 );
00589
00590 ERRVALUE FillRegion2D (
00591 const REGION2D& region,
00592 const bool fill,
00593 const float thickness,
00594 const COLOR& color,
00595 const MGD::LINEJOIN linejoin = MGD::LINEJOIN_Round
00596 );
00597
00598 void ApplyAffineForward (
00599 const TRANS2D_AFFINE& affine,
00600 FPOINT2D& point
00601 );
00602
00603 void ApplyAffineInverse (
00604 const TRANS2D_AFFINE& affine,
00605 FPOINT2D& point
00606 );
00607
00608 void SetMask (
00609 const DOUBLE_ARRAY<DTRIANGLE2D> triangles,
00610 GRE::POINTSFIELD& PointsField
00611 );
00612
00613 void ClearMask (
00614 GRE::POINTSFIELD& PointsField
00615 );
00616
00617 ERRVALUE DrawPixels (
00618 SIMPLE_ARRAY<FPOINT3D>& points,
00619 const COLOR& color
00620 );
00621
00622 ERRVALUE DrawPixels (
00623 SIMPLE_ARRAY<FPOINT3D>& points,
00624 const COLOR& color,
00625 const RVC::STYLEPATTERN_BITMAP& pattern
00626 );
00627
00628 ERRVALUE DrawTriangle3D (
00629 const FPOINT3D& pt1,
00630 const FPOINT3D& pt2,
00631 const FPOINT3D& pt3,
00632 const COLOR& color
00633 );
00634
00635 ERRVALUE ConstructScales ();
00636 double GetElevation( const double x, const double y);
00637
00638 #endif // GENERATING_DOXYGEN_OUTPUT
00639 };
00640
00641
00643 class GEOMETRIC3D_ELEMENTS {
00644 public:
00645
00646 class ITERATOR_BASE {
00647 public:
00648
00649 virtual ~ITERATOR_BASE (
00650 ) {}
00651
00652
00653 virtual INT32 operator* (
00654 ) const = 0;
00655
00656
00657 virtual ITERATOR_BASE* operator++ (
00658 ) = 0;
00659
00660
00661 virtual bool operator== (
00662 const ITERATOR_BASE* rhs
00663 ) const = 0;
00664
00665
00666 virtual bool operator!= (
00667 const ITERATOR_BASE* rhs
00668 ) const = 0;
00669
00670 protected:
00671 ITERATOR_BASE () {}
00672 };
00673
00674 class BITSET_ITERATOR_BASE : public ITERATOR_BASE {
00675 public:
00676
00677 ~BITSET_ITERATOR_BASE () {}
00678
00679 void Begin();
00680
00681 void End();
00682
00683 INT32 operator* () const;
00684
00685 GRE::GEOMETRIC3D_ELEMENTS::ITERATOR_BASE* operator++ ();
00686
00687 bool operator== (
00688 const GRE::GEOMETRIC3D_ELEMENTS::ITERATOR_BASE* rhs
00689 ) const;
00690
00691 bool operator!= (
00692 const GRE::GEOMETRIC3D_ELEMENTS::ITERATOR_BASE* rhs
00693 ) const;
00694
00695 protected:
00696
00697 BITSET_ITERATOR_BASE (const bool selected) : m_Selected(selected) { End(); }
00698
00699 private:
00700 #ifndef GENERATING_DOXYGEN_OUTPUT
00701 const bool m_Selected;
00702 BITSET m_Bitset;
00703 BITSET::ITERATOR m_Iterator;
00704
00705 BITSET_ITERATOR_BASE ();
00706
00707 virtual ERRVALUE ComputeSelectedElements (BITSET& bitset) = 0;
00708 virtual ERRVALUE ComputeHighlightedElements (BITSET& bitset) = 0;
00709 #endif
00710 };
00711
00712 class ITERATOR {
00713 public:
00714
00715 ITERATOR () : m_Base(0) {}
00716 ~ITERATOR () {}
00717
00718
00719 INT32 operator* (
00720 ) const {return m_Base->operator*();}
00721
00722
00723 ITERATOR& operator++ (
00724 ) {m_Base->operator++(); return *this; }
00725
00726
00727 bool operator== (
00728 const ITERATOR& rhs
00729 ) const { return m_Base->operator==(rhs.m_Base); }
00730
00731
00732 bool operator!= (
00733 const ITERATOR& rhs
00734 ) const { return m_Base->operator!=(rhs.m_Base); }
00735
00736 private:
00737 #ifndef GENERATING_DOXYGEN_OUTPUT
00738
00739 ITERATOR (ITERATOR_BASE* base) : m_Base(base) {}
00740
00741 ITERATOR_BASE *m_Base;
00742
00743 friend class GEOMETRIC3D_ELEMENTS;
00744 #endif
00745 };
00746
00747 GEOMETRIC3D_ELEMENTS (
00748 ) {}
00749
00750 virtual ~GEOMETRIC3D_ELEMENTS (
00751 ) {}
00752
00756 bool IsTerrainNeeded (
00757 ) { return v_IsTerrainNeeded(); }
00758
00762 bool IsPointsFieldNeeded (
00763 ) { return v_IsPointsFieldNeeded(); }
00764
00765 void ConstructWireframe (
00766 const INT32 id,
00767 GEOMETRIC3D_BUILDER* builder
00768 ) { v_ConstructWireframe(id, builder); }
00769
00770 void ConstructSolid (
00771 const INT32 id,
00772 GEOMETRIC3D_BUILDER* builder
00773 ) { v_ConstructSolid(id, builder); }
00774
00775 void OnConstructionBegin (
00776 const bool wireframe
00777 ) { v_OnConstructionBegin(wireframe); }
00778
00779 void OnConstructionEnd (
00780 ) { v_OnConstructionEnd(); }
00781
00782 ITERATOR BeginSelected (
00783 ) { return ITERATOR(GetSelectedBase(true)); }
00784
00785 ITERATOR EndSelected (
00786 ) { return ITERATOR(GetSelectedBase(false)); }
00787
00788 ITERATOR BeginHighlited (
00789 ) { return ITERATOR(GetHighlightedBase(true)); }
00790
00791 ITERATOR EndHighlited (
00792 ) { return ITERATOR(GetHighlightedBase(false)); }
00793
00794 INT32 GetActiveElement (
00795 ) { return v_GetActiveElement(); }
00796
00797 INT32 GetNumSelectedElements (
00798 ) { return v_GetNumSelectedElements(); }
00799
00800 INT32 GetNumHighlightedElements (
00801 ) { return v_GetNumHighlightedElements(); }
00802
00803 private:
00804 #ifndef GENERATING_DOXYGEN_OUTPUT
00805 friend class ITERATOR;
00806
00807 virtual ITERATOR_BASE* GetSelectedBase (const bool begin) = 0;
00808 virtual ITERATOR_BASE* GetHighlightedBase (const bool begin) = 0;
00809 virtual INT32 v_GetActiveElement () = 0;
00810 virtual INT32 v_GetNumSelectedElements () = 0;
00811 virtual INT32 v_GetNumHighlightedElements () = 0;
00812 virtual void v_ConstructWireframe (const INT32 id, GEOMETRIC3D_BUILDER* builder) = 0;
00813 virtual void v_ConstructSolid (const INT32 id, GEOMETRIC3D_BUILDER* builder) = 0;
00814 virtual void v_OnConstructionBegin (const bool ) { return; }
00815 virtual void v_OnConstructionEnd () { return; }
00816 virtual bool v_IsTerrainNeeded () = 0;
00817 virtual bool v_IsPointsFieldNeeded () = 0;
00818
00819 #endif // GENERATING_DOXYGEN_OUTPUT
00820 };
00821
00822 typedef SIMPLE_ARRAY<GEOMETRIC3D_ELEMENTS*> GEOMETRIC3D_ELEMENTS_ARRAY;
00823
00824 }
00825
00826 #endif
00827