#include #include #include #include "ajusteRecta.h" void acerosdAjusteRecta (tajur ajur) { ajur->n = 0; ajur->sx = 0.0; ajur->sy = 0.0; ajur->sxy = 0.0; ajur->sx2 = 0.0; ajur->sy2 = 0.0; ajur->delx = 0.0; ajur->ax = 0.0; ajur->bx = 0.0; ajur->dely = 0.0; ajur->ay = 0.0; ajur->by = 0.0; ajur->r = 0.0; } void nuevodAjusteRecta (tajur * najur) { tajur ajur; ajur = (tajur) malloc (sizeof(struct teajur)); acerosdAjusteRecta (ajur); *najur = ajur ; } void borradAjusteRecta (tajur ajur) { free (ajur); } void imprimedAjusteRecta (tajur ajur) { printf ("n: %4d\n", ajur->n); printf ("sx: %8.2f\n", ajur->sx); printf ("sy: %8.2f\n", ajur->sy); printf ("sxy: %8.2f\n", ajur->sxy); printf ("sx2: %8.2f\n", ajur->sx2); printf ("sy2: %8.2f\n", ajur->sy2); } void anyadedAAjusteRecta (tajur ajur, int x, int y) { ajur->n += 1 ; ajur->sx += x ; ajur->sy += y ; ajur->sxy += x * y ; ajur->sx2 += x * x ; ajur->sy2 += y * y ; } void calculaAjusteRecta (tajur ajur) { ajur->delx = ajur->n * ajur->sx2 - ajur->sx * ajur->sx ; ajur->ax = ( ajur->n * ajur->sxy - ajur->sx * ajur->sy ) / ajur->delx ; ajur->bx = ( ajur->sx2 * ajur->sy - ajur->sx * ajur->sxy ) / ajur->delx ; ajur->dely = ajur->n * ajur->sy2 - ajur->sy * ajur->sy ; ajur->ay = ( ajur->n * ajur->sxy - ajur->sx * ajur->sy ) / ajur->dely ; ajur->by = ( ajur->sx - ajur->ay * ajur->sy ) / ajur->n ; /* */ ajur->r = sqrt (ajur->ax * ajur->ay) ; } double distanciaXarectaAjuste (tajur ajur, int x, int y) { return x - (y * ajur->ay + ajur->by); } double distanciaYarectaAjuste (tajur ajur, int x, int y) { return y - (x * ajur->ax + ajur->bx); }