0

Atari 1979のようなベクトル化されたフォントエンジンを設計しようとしています。事前定義された文字セットとその座標を保存するのに問題があります。これらのポリゴンを保存するのに最適なデータ構造は何か、または何がわかりません。そのためのクラスを設計するための最良の方法です。これが私の試練ですが、私はそれについてまったく気が進まないのです。

class Character
{
public:
      Character();

public:
    int ascii;
    int strokes;
    std::vector<ci::Vec2i> points;

};
void VectorFont::Init_Chars()
{

    for (int i=0; i<1;i++)
    {
        Character char_A;
        char_A.ascii = 65;
        char_A.strokes = 6;
        ci::Vec2i point_1 = ci::Vec2i(-6,-4);
        ci::Vec2i point_2 = ci::Vec2i(0,8);
        ci::Vec2i point_3 = ci::Vec2i(0,8);
        ci::Vec2i point_4 = ci::Vec2i(6,-4);
        ci::Vec2i point_5 = ci::Vec2i(4,0);
        ci::Vec2i point_6 = ci::Vec2i(-4,0);
        char_A.points.push_back(point_1);
        char_A.points.push_back(point_2);
        char_A.points.push_back(point_3);
        char_A.points.push_back(point_4);
        char_A.points.push_back(point_5);
        char_A.points.push_back(point_6);
        chars.push_back(char_A);
    }

}
4

1 に答える 1

0

Pathこれらの文字には穴があるため、クラスを定義する必要があります。

class Path
{
     public: 
         std::vector<ci::Vec2i> points;
         int orientation; // 1 for fill, 0 for hole.
}

APathは、ポイントと方向のコレクションです。パスを閉じる必要があります。つまり、最初と最後のポイントは同じです。向きが1の場合、黒で塗りつぶすことを意味します。0の場合は、穴を開けます。

次に、Characterクラスにはパスのコレクションがあり、これは塗りつぶしまたは穴になります。

上記は、塗りつぶしと穴のポイントのデータ構造を説明しただけです。そのデータ構造をピクセルに変換するには、エンジンを作成する必要があります。それは別のトピックです。

于 2012-12-12T01:29:35.430 に答える