Changeset 34:ee0188025de8 in roaraudio
- Timestamp:
- 06/22/08 03:31:39 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/poly.c
r31 r34 3 3 #include "libroar.h" 4 4 5 int roar_math_mkpoly (float * poly, float * data, int len); 5 int roar_math_mkpoly (float * poly, float * data, int len) { 6 if ( len == 2 ) 7 return roar_math_mkpoly_2x2(poly, data); 8 if ( len == 3 ) 9 return roar_math_mkpoly_3x3(poly, data); 10 if ( len == 4 ) 11 return roar_math_mkpoly_4x4(poly, data); 12 if ( len == 5 ) 13 return roar_math_mkpoly_5x5(poly, data); 6 14 7 int roar_math_mkpoly_2x2 (float * poly, float * data); 8 int roar_math_mkpoly_3x3 (float * poly, float * data); 9 int roar_math_mkpoly_4x4 (float * poly, float * data); 15 return -1; 16 } 17 18 int roar_math_mkpoly_2x2 (float * poly, float * data) { 19 /* 20 A B 21 0 1 x 22 1 1 y 23 24 B = x 25 A = y - x 26 */ 27 28 poly[0] = data[0]; 29 poly[1] = data[1] - data[0]; 30 31 return 0; 32 } 33 34 int roar_math_mkpoly_3x3 (float * poly, float * data) { 35 /* 36 A B C 37 0 0 1 x 38 1 1 1 y 39 4 2 1 z 40 */ 41 42 poly[0] = data[0]; 43 poly[1] = 2*data[1] - 2*data[0] - (data[2]-data[0])/2; 44 poly[2] = (data[2]-data[0])/2 - data[1] + data[0]; 45 46 47 return 0; 48 } 49 50 int roar_math_mkpoly_4x4 (float * poly, float * data) { 51 /* 52 a b c d 53 0 0 0 1 A X 0 54 1 1 1 1 B Y 1 55 8 4 2 1 C Z 2 56 27 9 3 1 D Q 3 57 */ 58 59 60 // { a = -(3z-3y+x-q)/6, b = (4z-5y+2x-q)/2, c = -(9z-18y+11x-2q)/6, d = x }. 61 62 poly[0] = data[0]; 63 poly[1] = -(11*data[0] - 18*data[1] + 9*data[2] - 2*data[3])/6; 64 poly[2] = (2 *data[0] - 5*data[1] + 4*data[2] - data[3])/2; 65 poly[3] = -( data[0] - 3*data[1] + 3*data[2] - data[3])/6; 66 67 return 0; 68 } 69 10 70 int roar_math_mkpoly_5x5 (float * poly, float * data); 11 71
Note: See TracChangeset
for help on using the changeset viewer.