int compare_xforms(const void *av, const void *bv) { flam3_xform *a = (flam3_xform *) av; flam3_xform *b = (flam3_xform *) bv; double aa[2][2]; double bb[2][2]; double ad, bd; aa[0][0] = a->c[0][0]; aa[0][1] = a->c[0][1]; aa[1][0] = a->c[1][0]; aa[1][1] = a->c[1][1]; bb[0][0] = b->c[0][0]; bb[0][1] = b->c[0][1]; bb[1][0] = b->c[1][0]; bb[1][1] = b->c[1][1]; ad = det_matrix(aa); bd = det_matrix(bb); if (a->color_speed > b->color_speed) return 1; if (a->color_speed < b->color_speed) return -1; if (a->color_speed) { if (ad < 0) return -1; if (bd < 0) return 1; ad = atan2(a->c[0][0], a->c[0][1]); bd = atan2(b->c[0][0], b->c[0][1]); } if (ad < bd) return -1; if (ad > bd) return 1; return 0; }
static int compare_xforms (const void *va, const void *vb) { double aa[2][2]; double bb[2][2]; double ad, bd; const xform *a = va; const xform *b = vb; aa[0][0] = a->c[0][0]; aa[0][1] = a->c[0][1]; aa[1][0] = a->c[1][0]; aa[1][1] = a->c[1][1]; bb[0][0] = b->c[0][0]; bb[0][1] = b->c[0][1]; bb[1][0] = b->c[1][0]; bb[1][1] = b->c[1][1]; ad = det_matrix (aa); bd = det_matrix (bb); if (ad < bd) return -1; if (ad > bd) return 1; return 0; }