MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / Interpolate_Bspline

Function Interpolate_Bspline

src/SB/Core/x/xSpline.cpp:98–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96}
97
98void Interpolate_Bspline(xVec3* data, xVec3* control, F32* knots, U32 nodata)
99{
100 F32* alpha;
101 F32* beta;
102 F32* gamma;
103
104 U32 i;
105
106 F32 t1;
107 F32 t2;
108 F32 t3;
109 F32 t4;
110 F32 t5;
111
112 F32 diff_43;
113 F32 diff_41;
114 F32 diff_32;
115 F32 diff_52;
116
117 alpha = (F32*)RwMalloc(nodata * 4);
118 beta = (F32*)RwMalloc(nodata * 4);
119 gamma = (F32*)RwMalloc(nodata * 4);
120
121 if (nodata > 2)
122 {
123 knots = knots + 1;
124
125 for (i = 1; i < nodata - 1; i += 1)
126 {
127 alpha = alpha + 1;
128 beta = beta + 1;
129 gamma = gamma + 1;
130
131 t1 = knots[1];
132 t2 = knots[2];
133 t3 = knots[3];
134 t4 = knots[4];
135 t5 = knots[5];
136
137 diff_41 = t4 - t1;
138 diff_43 = t4 - t3;
139 diff_32 = t3 - t2;
140 diff_52 = t5 - t2;
141
142 *alpha = (diff_43 * diff_43) / diff_41;
143 *beta = ((t3 - t1) * diff_43) / diff_41 + ((t5 - t3) * diff_32) / diff_52;
144 *gamma = (diff_32 * diff_32) / diff_52;
145
146 t4 = t4 - t2;
147 *alpha = *alpha / t4;
148 *beta = *beta / t4;
149 *gamma = *gamma / t4;
150 }
151 }
152 Tridiag_Solve(alpha, beta, gamma, data, control + 1, nodata);
153
154 RwFree(alpha);
155 RwFree(beta);

Callers 1

xSpline3_UpdateFunction · 0.70

Calls 1

Tridiag_SolveFunction · 0.70

Tested by

no test coverage detected