/************************************************************************* ** FUNKTION: kachange.c ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ #include "kachange.h" #include "ka.h" #include "celltype.h" /************************************************************************* ** FUNKTION: KaChangeTyp ** ZWECK: macht aus einer ST-Kante eine TS-Kante und umgekehrt. ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: Es muss GENAU eine Richtung existieren ! *************************************************************************/ void KaChangeTyp( SNr, TNr) int SNr; int TNr; { KANTE *p; ECKE *ealt, *eneu, *e; if ( (p = KaKante[ SNr][ TNr].NachTrans) ) { /* ST nach TS */ KaKante[ SNr][ TNr].NachStelle = p; KaKante[ SNr][ TNr].NachTrans = NULL; p->NegativKante = FALSE; ((OBJECT *)(p->OrgKa))->typ = CE_TS_KANTE; ((OBJECT *)(p->OrgKaD))->typ = CE_TS_KANTE_DELTA; } else { /* TS nach ST */ p = KaKante[ SNr][ TNr].NachTrans = KaKante[ SNr][ TNr].NachStelle; KaKante[ SNr][ TNr].NachStelle = NULL; ((OBJECT *)(p->OrgKa))->typ = CE_ST_KANTE; ((OBJECT *)(p->OrgKaD))->typ = CE_ST_KANTE_DELTA; } p->delta = - (p->delta); /* delta andersrum */ if ( (ealt = p->Ecke) ) { eneu = NULL; while (e = ealt) { ealt = ealt->next; e->next = eneu; eneu = e; }; p->Ecke = eneu; } }