Group: http://groups.google.com/group/iphonedevcampua/topics
- cocos2d и полет бабочки по заданой траектории [2 Updates]
"Виталик Белодед" <iero...@gmail.com> Sep 09 01:22PM -0700 ^
Вот уж не знаю как там в этом гейском cocos2d, а вот в суровом
пацанском си-плюс-плюсе это можно реализовать через массив опорных
точек для кривых Безье, разбитый на пары/тройки/n-ки и подставленные в
соответствующие уравнения кривых безье. Это чтоб движение плавное
получилось. Ну а ежели уж совсем через, пардон, жопу делать, с
ломаными вместо кривых, то можно просто умножая dt на разницу значений
между двумя опорными точками.
Санёк <bud...@gmail.com> Sep 09 11:25PM +0300 ^
--
нет, конечно ломаные сюда никак не пойдут, а Безье конечно круто, но если
нужно сделать штук 20 разных петель, то заколупаюсь я высчитывать что там
куда
You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
To post to this group, send email to iphoned...@googlegroups.com.
To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.
On Sep 11, 10:03 am, Санёк <budd...@gmail.com> wrote:
> Ну давайте предположим, что нашей бабочке нужно проделать такой вот путьhttp://imm.io/1h0i(представим, что это плавные линии :)) С кривыми Безъе
2010/9/12 wicharek <wich...@gmail.com>:
> --
> You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
> To post to this group, send email to iphoned...@googlegroups.com.
> To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.
>
>
--
Sincerely,
Vladimir "Farcaller" Pouzanov
http://farcaller.net/
Вот так это делается для передвижения объекта от одной точки (p0) к
другой(p2). p1 - промежуточное значение. Если хочется большей
плавности - можно использовать уравнения больших порядков, только там
промежуточных точек, да и вычислений побольше будет.
template <typename TargetType>
class NHTransformationBezierSquare : public NHTransformationSingle {
protected:
TargetType p0, p1, p2;
TargetType *destination;
float totalTime;
float timeElapsed;
public:
NHTransformationBezierSquare(TargetType *theDestination, const
TargetType& pnt1, const TargetType& pnt2, float duration) :
NHTransformationSingle(duration) {
destination = theDestination;
p0 = *destination;
p1 = pnt1;
p2 = pnt2;
timeElapsed = 0;
totalTime = duration;
};
protected:
virtual void transform(float dt) {
timeElapsed += dt;
float t = timeElapsed/totalTime;
float oneMinT = 1 - t;
*destination = p0*(oneMinT*oneMinT) + p1*(2*t*oneMinT) + p2*(t*t);
};
void finalize() {
//*destination = finalValue;
};
protected:
~NHTransformationBezierSquare() {};
};
template <typename TargetType>
class NHTransformationBezierCube : public NHTransformationSingle {
protected:
TargetType p0, p1, p2, p3;
TargetType *destination;
float totalTime;
float timeElapsed;
public:
NHTransformationBezierCube(TargetType *theDestination, const
TargetType& pnt1, const TargetType& pnt2, const TargetType& pnt3,
float duration) : NHTransformationSingle(duration) {
destination = theDestination;
p0 = *destination;
p1 = pnt1;
p2 = pnt2;
p3 = pnt3;
timeElapsed = 0;
totalTime = duration;
};
protected:
virtual void transform(float dt) {
timeElapsed += dt;
float t = timeElapsed/totalTime;
float oneMinT = 1 - t;
*destination = p0*(oneMinT*oneMinT*oneMinT) +
p1*(3*t*oneMinT*oneMinT) + p2*(3*t*t*oneMinT)+ p3*(t*t*t);
};
void finalize() {
//*destination = finalValue;
};
protected:
~NHTransformationBezierCube() {};
};
On 11 сен, 10:03, Санёк <budd...@gmail.com> wrote:
> Ну давайте предположим, что нашей бабочке нужно проделать такой вот путьhttp://imm.io/1h0i(представим, что это плавные линии :)) С кривыми Безъе