GConst::Evaluateで、幾何要素の座標の評価を行う。動かすモードなどで、座標の変更が予想される場合には、MyCanvasの中で
EvaluateConst(cns);
を実行する。これで、cns->Evaluate()が実行される。
たとえば、2点を結ぶ直線を引く、という作図はCONST_JOINというコードであらわされ、Evaluateの中では
たとえば、2点を結ぶ直線を引く、という作図はCONST_JOINというコードであらわされ、Evaluateの中では
bool GConst::Evaluate(void)
{
.....
switch(Const_Type){
case CONST_JOIN:
if(PInput1==NULL || PInput2==NULL || LOutput==NULL){
return true;
}
LOutput->xx = PInput1->yy * PInput2->zz - PInput1->zz * PInput2->yy;
LOutput->yy = PInput1->zz * PInput2->xx - PInput1->xx * PInput2->zz;
LOutput->zz = PInput1->xx * PInput2->yy - PInput1->yy * PInput2->xx;
if(LOutput->xx==CComplex(0.0,0.0) && LOutput->yy==CComplex(0.0,0.0) && LOutput->zz==CComplex(0.0,0.0)){
LOutput->xx=CComplex(1.0,0.0);
LOutput->zz=PInput1->xx * CComplex(-1.0,0.0);
}
break;
....
}
という感じになっている。点二つから直線が一つ決まるわけだから、PInput1とPInput2が入力にあたる点のポインタ。LOutputが2点から決まる直線のポインタ。という具合。
最後のif文は、万が一2点が同じ点だったときの処理。
最後のif文は、万が一2点が同じ点だったときの処理。