class GPoint :
public GObject
{
public:
CComplex xx,yy,zz;
GPoint(void);
GPoint(CComplex x,CComplex y,CComplex z);
GPoint(CComplex a,CComplex b);
GPoint(double xx, double yy, int rr, int gg, int bb, int radius);
GPoint(const GPoint& p);
~GPoint(void);
GPoint& operator = (const GPoint& p);
friend bool operator == (GPoint p,GPoint q);
bool used;
GPoint* next;
CComplex xz(void);
CComplex yz(void);
void ClearHilight(void){hilighted=false; if(next!=NULL){ next->ClearHilight(); }};
int NumbOfPt(void);
};
実質的な座標は(xx/zz,yy/zz)。ただし、計算の場合わけを省くため、zz=0の場合を否定しない。(zz=0の場合には描画しないだけ。)複素数を使っているが、xx/zz,yy/zzが実数のときにしか表示しない。xz()がxx/zz,yz()がyy/zzのこと。プログラム的には座標はxz().real()とyz().real()ということになる。
コンターはだいたい見ればわかるものばかり。
GPoint(double xx, double yy, int rr, int gg, int bb, int radius);
というのは初期バージョンで、あまり使い道ない。とくに、色や点の大きさを指定しないように方向変換したので。
nextは
GPoint* MyCanvas::pts
が指し示す点のデータ列のためのもの。つまり、「すべての点が」というループはMyCanvas内では
GPoint* pt;
for(pt=pts;pt!=NULL;pt=pt->next){
...
}
のように書く。
コンターはだいたい見ればわかるものばかり。
GPoint(double xx, double yy, int rr, int gg, int bb, int radius);
というのは初期バージョンで、あまり使い道ない。とくに、色や点の大きさを指定しないように方向変換したので。
nextは
GPoint* MyCanvas::pts
が指し示す点のデータ列のためのもの。つまり、「すべての点が」というループはMyCanvas内では
GPoint* pt;
for(pt=pts;pt!=NULL;pt=pt->next){
...
}
のように書く。