public virtual new CCActionInterval reverse() { CCPointArray cCPointArray = this.m_pPoints.copy(); CCPoint controlPointAtIndex = cCPointArray.getControlPointAtIndex(0); for (int i = 1; i < cCPointArray.count(); i++) { CCPoint cCPoint = cCPointArray.getControlPointAtIndex(i); cCPointArray.replaceControlPoint(cCPoint.Sub(controlPointAtIndex), i); controlPointAtIndex = cCPoint; } CCPointArray cCPointArray1 = cCPointArray.reverse(); controlPointAtIndex = cCPointArray1.getControlPointAtIndex(cCPointArray1.count() - 1); cCPointArray1.removeControlPointAtIndex(cCPointArray1.count() - 1); controlPointAtIndex = controlPointAtIndex.Neg(); cCPointArray1.insertControlPoint(controlPointAtIndex, 0); for (int j = 1; j < cCPointArray1.count(); j++) { CCPoint controlPointAtIndex1 = cCPointArray1.getControlPointAtIndex(j); CCPoint cCPoint1 = controlPointAtIndex1.Neg().Add(controlPointAtIndex); cCPointArray1.replaceControlPoint(cCPoint1, j); controlPointAtIndex = cCPoint1; } return(CCCardinalSplineBy.create(this.m_fDuration, cCPointArray1, this.m_fTension)); }
/** Rotates a point counter clockwise by the angle around a pivot * @param v is the point to rotate * @param pivot is the pivot, naturally * @param angle is the angle of rotation cw in radians * @returns the rotated point * @since v0.99.1 */ public static CCPoint RotateByAngle(CCPoint v, CCPoint pivot, float angle) { CCPoint r = v.Sub(pivot); float cosa = (float)Math.Cos(angle), sina = (float)Math.Sin(angle); float t = r.x; r.x = t * cosa - r.y * sina + pivot.x; r.y = t * sina + r.y * cosa + pivot.y; return(r); }
public static CCPoint RotateByAngle(CCPoint v, CCPoint pivot, float angle) { CCPoint cCPoint = v.Sub(pivot); float single = (float)Math.Cos((double)angle); float single1 = (float)Math.Sin((double)angle); float single2 = cCPoint.x; cCPoint.x = single2 * single - cCPoint.y * single1 + pivot.x; cCPoint.y = single2 * single1 + cCPoint.y * single + pivot.y; return(cCPoint); }
public virtual CCActionInterval reverse() { CCPointArray copyConfig = (CCPointArray)m_pPoints.copy(); // // convert "absolutes" to "diffs" // CCPoint p = copyConfig.getControlPointAtIndex(0); for (int i = 1; i < copyConfig.count(); ++i) { CCPoint current = copyConfig.getControlPointAtIndex(i); CCPoint diff = current.Sub(p); copyConfig.replaceControlPoint(diff, i); p = current; } // convert to "diffs" to "reverse absolute" CCPointArray pReverse = copyConfig.reverse(); // 1st element (which should be 0,0) should be here too p = pReverse.getControlPointAtIndex(pReverse.count() - 1); pReverse.removeControlPointAtIndex(pReverse.count() - 1); p = p.Neg(); pReverse.insertControlPoint(p, 0); for (int i = 1; i < pReverse.count(); ++i) { CCPoint current = pReverse.getControlPointAtIndex(i); current = current.Neg(); CCPoint abs = current.Add(p); pReverse.replaceControlPoint(abs, i); p = abs; } return(CCCardinalSplineBy.create(m_fDuration, pReverse, m_fTension)); }
public static float Distance(CCPoint v1, CCPoint v2) { return(Length(v1.Sub(v2))); }
/** Rotates a point counter clockwise by the angle around a pivot @param v is the point to rotate @param pivot is the pivot, naturally @param angle is the angle of rotation cw in radians @returns the rotated point @since v0.99.1 */ public static CCPoint RotateByAngle(CCPoint v, CCPoint pivot, float angle) { CCPoint r = v.Sub(pivot); float cosa = (float)Math.Cos(angle), sina = (float)Math.Sin(angle); float t = r.x; r.x = t * cosa - r.y * sina + pivot.x; r.y = t * sina + r.y * cosa + pivot.y; return r; }
public static float Distance(CCPoint v1, CCPoint v2) { return Length(v1.Sub(v2)); }