private void p(Vector3 result, double t) { if(t < 0) t = 1 + t; int end = mIsClosed ? 0 : 3; int start = mIsClosed ? 0 : 2; int currentIndex = start + (int) Math.floor((t == 1 ? t - DELTA : t) * (mNumPoints - end)); double tdivnum = (t * (mNumPoints - end)) - (currentIndex - start); mCurrentPoint.setAll(0, 0, 0); if (!mIsClosed) { // Limit the bounds for AccelerateDecelerateInterpolator currentIndex = Math.max(currentIndex, 2); currentIndex = Math.min(currentIndex, mPoints.size() - 2); } for (int j = -2; j <= 1; j++) { double b = b(j, tdivnum); int index = mIsClosed ? (currentIndex + j + 1) % (mNumPoints) : currentIndex + j; if (index < 0) index = mNumPoints - index - 2; Vector3 p = mPoints.get(index); mCurrentPoint.x += b * p.x; mCurrentPoint.y += b * p.y; mCurrentPoint.z += b * p.z; } result.setAll(mCurrentPoint); }
private void p(Vector3 result, double t) { if(t < 0) t = 1 + t; int end = mIsClosed ? 0 : 3; int start = mIsClosed ? 0 : 2; int currentIndex = start + (int) Math.floor((t == 1 ? t - DELTA : t) * (mNumPoints - end)); double tdivnum = (t * (mNumPoints - end)) - (currentIndex - start); mCurrentPoint.setAll(0, 0, 0); if (!mIsClosed) { // Limit the bounds for AccelerateDecelerateInterpolator currentIndex = Math.max(currentIndex, 2); currentIndex = Math.min(currentIndex, mPoints.size() - 2); } for (int j = -2; j <= 1; j++) { double b = b(j, tdivnum); int index = mIsClosed ? (currentIndex + j + 1) % (mNumPoints) : currentIndex + j; if (index < 0) index = mNumPoints - index - 2; Vector3 p = mPoints.get(index); mCurrentPoint.x += b * p.x; mCurrentPoint.y += b * p.y; mCurrentPoint.z += b * p.z; } result.setAll(mCurrentPoint); }