Merge pull request #147 from ideasman42/tstroke-remove-redundant-array

Remove redundant array allocation
This commit is contained in:
Shinya Kitaoka 2016-04-13 14:58:08 +09:00
commit 791cd10a98

View file

@ -3851,36 +3851,31 @@ TThickCubic *TCubicStroke::generateCubic3D(const T3DPointD pointsArrayBegin[],
const T3DPointD &tangentLeft, const T3DPointD &tangentLeft,
const T3DPointD &tangentRight) const T3DPointD &tangentRight)
{ {
// estendere a dim = 3 (cioe' +thik...)
typedef T3DPointD TwoPoints[2];
TwoPoints *A = new TwoPoints[size];
double X[2], C[2][2]; double X[2], C[2][2];
int i; int i;
T3DPointD p0 = *pointsArrayBegin; T3DPointD p0 = *pointsArrayBegin;
T3DPointD p3 = *(pointsArrayBegin + size - 1); T3DPointD p3 = *(pointsArrayBegin + size - 1);
for (i = 0; i < size; i++) {
A[i][0] = tangentLeft * B1(uPrime[i]);
A[i][1] = tangentRight * B2(uPrime[i]);
}
C[0][0] = C[0][1] = X[0] = 0; C[0][0] = C[0][1] = X[0] = 0;
C[1][0] = C[1][1] = X[1] = 0; C[1][0] = C[1][1] = X[1] = 0;
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
C[0][0] += A[i][0] * A[i][0]; const T3DPointD A[2] = {
C[0][1] += A[i][0] * A[i][1]; tangentLeft * B1(uPrime[i]),
C[1][1] += A[i][1] * A[i][1]; tangentRight * B2(uPrime[i]),
};
C[0][0] += A[0] * A[0];
C[0][1] += A[0] * A[1];
C[1][1] += A[1] * A[1];
C[1][0] = C[0][1]; C[1][0] = C[0][1];
T3DPointD tmp = *(pointsArrayBegin + i) - (B0plusB1(uPrime[i]) * p0) + T3DPointD tmp = *(pointsArrayBegin + i) - (B0plusB1(uPrime[i]) * p0) +
B2plusB3(uPrime[i]) * p3; B2plusB3(uPrime[i]) * p3;
X[0] += A[i][0] * tmp; X[0] += A[0] * tmp;
X[1] += A[i][1] * tmp; X[1] += A[1] * tmp;
} }
double detC0C1 = C[0][0] * C[1][1] - C[0][1] * C[1][0]; double detC0C1 = C[0][0] * C[1][1] - C[0][1] * C[1][0];
@ -3969,8 +3964,6 @@ TThickCubic *TCubicStroke::generateCubic3D(const T3DPointD pointsArrayBegin[],
TThickPoint(p2.x, p2.y, p2.z), TThickPoint(p2.x, p2.y, p2.z),
TThickPoint(p3.x, p3.y, p3.z)); TThickPoint(p3.x, p3.y, p3.z));
delete[] A;
return thickCubic; return thickCubic;
} }