最も高い 2 つの CGPoints を見つけて、それらを平準化します。同時に、最も低い 2 つの CGPoints、最も左の 2 つの CGPoints、および最も右の 2 つの CGPoints を平準化します。
//assuming skewpoint1 & skewpoint2 are the highest points
if (skewpoint1.y < skewpoint2.y)
skewpoint1.y += speed;
skewpoint2.y -= speed;
else
skewpoint1.y -= speed;
skewpoint2.y += speed;
最下点と、左端の 2 つと右端の 2 つの CGPoints の x 値について同様のことを行います。
また、ポイント間が 2xspeed 未満の場合にスナップ機能を追加して、両方の中央のポイントにスナップすることもできます。
if (abs(skewpoint1.y - skewpoint2.y) < (speed*2))
//depending on which CGPoint is higher
skewpoint1.y += (abs(skewpoint1.y - skewpoint2.y)/2);
skewpoint2.y -= (abs(skewpoint1.y - skewpoint2.y)/2);