The project SystemFugen is provided as two groups, MGCL and fugen. MGCL is a 3D surface modeler that utilizes NURBS free form surfaces and curves. MGCL can be used as a DLL library. As a modeler, MGCL supports shell modeling that connect trimmed surfaces, and enables a watertight tessellation of shell model. For its rendering, it supports the interfaces to OpenGL4. It provides fundamental mathematical function classes such as vector, matrix, or others. On the other hand, Fugen is a 3D surface modeling system that uses Windows MFC framework as its Man-Machine interface. We use IGES file format to exchange models. We look for some engineering company who use Fugen, and CAD developpers who and work for Fugen.
Main improvement of MGCL V11 (1) C++ Move Semantics conforming. MGCLV11 uses the move semantics. Although we have some to do for IGES programs, all the major program of B-Spline programs use move semantics. This will improve the performance drastically. (2) We abolished the use of the class MGPVector and MGPlist. Instead use the container of std::unique_ptr. Conventional auto_ptr is replaced with unique_ptr. (3) Improvement of tessellation program. We had some examples that are not triangulated properly. These are now good. So far, we do not have bad face examples. (4) Many constructors of B-spline curves and surfaces are changed to member functions. Those function names are buildxxxxx, which are much easier to understand.
MGCL V11の主な変更点 (1) C++ Move Semantics対応 MGVLV11ではムーブセマンティクスを利用しています。IGES関連プログラムではまだムーブセマンティクス対応の 見直しが必要ですが、他では、特にB-Spline関連クラス(MGNDDArray, MGKnotVector, MGBPointSeq, MGSPointSeqなど)は、 この機能を利用するよう改良されています。
(2) MGPVector<>, MGPList<>の廃止 MGCLV10まで利用していたMGPVector<>, MGPList<>は廃止してstd::unique_ptr<>のvector, listに変更し, 積極的にunique_ptrを利用しています。また、従来使用していたauto_ptrはすべてunique_ptrの利用に 変更しています。
(3) Tessellationプログラム改良 Tessellationプログラムを大幅に改良しています。今までうまくいかなかった多くの例も可となっています。 さらなる課題として、大体四角形に近いもののtessellationを今のアルゴリズムでなく isotropicなもので実施したい。
(4) B-Splineクラス MGLBRep, MGSBRepのctor改良 今までコンストラクター(ctor)として提供していたB-Splineの生成(Curve, Surfaceともに)を buildxxxxxとしてメンバー関数化してわかりやすくした。