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
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 #ifndef __FK_MODIFY_HEADER__
00073 #define __FK_MODIFY_HEADER__
00074
00075 #include <FK/Operation.h>
00076
00078
00107 class fk_Modify : public fk_Operation {
00108
00109 private:
00110 bool CheckLoop4Cont(fk_Half *);
00111
00112 public:
00114 fk_Modify(fk_DataBase * = (fk_DataBase *)NULL);
00115
00117 ~fk_Modify();
00118
00120
00121
00123
00145 fk_Loop * removeVertexInLoop(fk_Vertex *V);
00146
00148
00178 bool contractEdge(fk_Edge *E, bool R = true);
00179
00181
00195 bool contractEdge(fk_Edge *E, fk_Vector P, bool R = true);
00196
00198
00205 bool checkContract(fk_Edge *E);
00206
00207
00209
00211
00231 fk_Loop * makePolygon(std::vector<fk_Vector> *array,
00232 bool openFlg, bool initFlg = true);
00233
00235
00255 fk_Loop * makePolygon(int num, fk_Vector *array,
00256 bool openFlg, bool initFlg = true);
00257
00259
00277 fk_Loop * pushPolygon(std::vector<fk_Vector> *array,
00278 bool openFlg = false);
00279
00281
00299 fk_Loop * pushPolygon(int num, fk_Vector *array,
00300 bool openFlg = false);
00301
00303
00316 void pushPolygonVertex(fk_Vector pos, bool openFlg);
00317
00318
00320
00322
00328 void makePoint(std::vector<fk_Vector> *array);
00329
00331
00338 void makePoint(int num, fk_Vector *array);
00339
00341
00348 fk_Vertex * pushPointVertex(fk_Vector pos);
00349
00350
00352
00354
00362 void makeLines(std::vector<fk_Vector> *array);
00363
00365
00376 void makeLines(int num, fk_Vector *array);
00377
00379
00387 fk_Edge * pushLines(fk_Vector pos1, fk_Vector pos2);
00388
00390
00402 bool setLinePos(int ID, fk_Vector pos);
00403
00405
00420 bool setLinePos(int edgeID, int vertexID, fk_Vector pos);
00421
00423
00437 bool changeLine(int edgeID, fk_Vector pos1, fk_Vector pos2);
00438
00439
00441
00443
00466 void makeBlock(double x, double y, double z);
00467
00469
00481 void setBlockSize(double x, double y, double z);
00482
00484
00498 void setBlockSize(double length, fk_Axis axis);
00499
00501
00511 void setBlockScale(double scale);
00512
00514
00528 void setBlockScale(double scale, fk_Axis axis);
00529
00531
00543 void setBlockScale(double x, double y, double z);
00544
00545
00547
00549
00568 void makeCircle(int div, double rad);
00569
00571
00581 void setCircleRadius(double rad);
00582
00584
00594 void setCircleDivide(int div);
00595
00597
00607 void setCircleScale(double scale);
00608
00609
00611
00613
00630 void makeSphere(int div, double rad);
00631
00633
00643 void setSphereRadius(double rad);
00644
00646
00656 void setSphereDivide(int div);
00657
00659
00669 void setSphereScale(double scale);
00670
00671
00673
00675
00695 void makePrism(int div, double top,
00696 double bottom, double height);
00697
00699
00709 void setPrismDivide(int div);
00710
00712
00722 void setPrismTopRadius(double top);
00723
00725
00735 void setPrismBottomRadius(double bottom);
00736
00738
00748 void setPrismHeight(double height);
00749
00750
00752
00754
00773 void makeCone(int div, double rad, double height);
00774
00776
00786 void setConeDivide(int div);
00787
00789
00799 void setConeRadius(double rad);
00800
00802
00812 void setConeHeight(double height);
00813
00814
00816
00818
00827 bool moveVPosition(int vertexID, fk_Vector pos, int order = 0);
00828
00830
00841 bool moveVPosition(int vertexID, double x, double y, double z,
00842 int order = 0);
00843
00845
00855 bool moveVPosition(int vertexID, double *array, int order = 0);
00856
00857 };
00858
00859 #endif // !__FK_MODIFY_HEADER__