Maps > 地図投影図法 > 新しい投影図法の作成 > 投影図法の定義
 
投影図法の定義
投影図法は、proj_step1.cpp ファイルで定義されます。
クラスを定義するためには、IlvMapsDefineBasicProjectionIO マクロを使用します。このマクロは、入出力操作のサポートに必要な関数とスタティック・メンバーを定義します。また、IlvProjectionClassInfo を初期化するコードも生成します。
#include "proj_step1.h"
IlvMapsDefineBasicProjectionIO(Mercator,
IlvProjection,
"My Mercator Implementation",
new Mercator(),
IlvMapsEmptyStatement());
*このマクロの最初の引数は、投影図法クラスの名前です。
*2 番目の引数は、投影図法のスーパークラスの名前です。
*3 番目の引数は投影図法の名前です。この名前は、IlvProjectionDictionary クラスなどで使用されます。
*4 番目の引数は、このクラスの新しいインスタンスを作成するために使用されるステートメントです。
*最後の引数は、投影図法クラスの初期化で呼び出されるステートメントです。このサンプル・コードでは指定がないので、IlvMapsEmptyStatement マクロが使用されます。最終パラメーターは、手順 2 および 3 で使用されます。
ここで、投影図法コンストラクターの定義が必要になります。このコンストラクターは、その IlvProjection スーパークラスのコンストラクターを呼び出します。3 つの引数を取ります。
*最初の引数は IlBoolean 値で、投影図法で非球形の楕円をサポートするかどうかを指定します。このサンプルでは、投影図法で非球形の楕円の方程式をサポートしているため、この引数は IlTrue に設定されています。
*2 番目の引数は IlvBoolean 値で、逆関数をサポートするかどうかを示します。この例では、投影図法で逆関数をサポートしているため、この引数は IlTrue に設定されています。
*3 番目の引数は enum 値で、投影図法のジオメトリー・プロパティーを示します。この例では、メルカトル図法が正角のため、この引数は IlvConformalProjectionGeometricProperty です。
IlvMapsDeclareProjectionIO マクロで宣言されるコピー・コンストラクターを定義する必要もあります。
Mercator::Mercator()
:IlvProjection(IlTrue,
IlTrue,
IlvConformalProjectionGeometricProperty)
{
}
Mercator::Mercator(const Mercator& source)
:IlvProjection(source)
{
}

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.