1. Написание поиска координаты Y от функции Безье(X) (Охрененно сложная задача, т.к. нужно решать Кубическое уравнение и находить корень, который потом подставлять как параметр в Безье для Y)
Написал таки я эту функцию... Может кому поможет или пригодится кому нибудь, вот исходник:
Code
function findBezier(x,a1,b1,c1,d1,a2,b2,c2,d2:Single):Single;
function BezierF(t,a,b,c,d:Single):Single; var t1:Single; begin t1:=(1-t); result:=t1*t1*t1*a + 3*t*t1*t1*b + 3*t*t*t1*c + t*t*t*d; end;
function find(t1,t2,t3:single):single; var xdiv:single; begin xdiv:=BezierF(t2,a1,b1,c1,d1); if abs(xdiv-x)<0.001 then begin result:=t2; exit; end; if xdiv>x then result:=find(t1,(t1+t2)/2,t2) else result:=find(t2,(t2+t3)/2,t3); end; begin result:=BezierF(find(0,0.5,1.0),a2,b2,c2,d2); end;
Список последних доработок, без которых релиза не будет:
1. Написание поиска координаты Y от функции Безье(X) (Охрененно сложная задача, т.к. нужно решать Кубическое уравнение и находить корень, который потом подставлять как параметр в Безье для Y) 2. Контроль редактирования элементов (чтобы Child и AnimTex нельзя было перемещать, т.к. матрицы у них нет) 3. Удаление Элемента из Анимации 4. Добавление свободного Элемента в Анимацию 5. Сохранение контейнера XAnimClipLibraty
ппц... это же сколько сил и негров нервов надо убить на такую работу
------------------------------------------------------------- And when the sun is shining, there is justice for all... And all the people will remember that funny "war". War, which was so dark in the beginning and so shiny in the end. But now it's over. Over for all. ------------------------------------------------------------- Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
Список последних доработок, без которых релиза не будет:
1. Написание поиска координаты Y от функции Безье(X) (Охрененно сложная задача, т.к. нужно решать Кубическое уравнение и находить корень, который потом подставлять как параметр в Безье для Y) 2. Контроль редактирования элементов (чтобы Child и AnimTex нельзя было перемещать, т.к. матрицы у них нет) 3. Удаление Элемента из Анимации 4. Добавление свободного Элемента в Анимацию 5. Сохранение контейнера XAnimClipLibraty
function findBezier(x,a1,b1,c1,d1,a2,b2,c2,d2:Single):Single;
function BezierF(t,a,b,c,d:Single):Single; var t1:Single; begin t1:=(1-t); result:=t1*t1*t1*a + 3*t*t1*t1*b + 3*t*t*t1*c + t*t*t*d; end;
var left, right, mid:single; var xdiv:single; begin left:=0; mid:=0.5; right:=1; xdiv:=BezierF(mid,a1,b1,c1,d1); do mid:=(left+right)/2; xdiv:=BezierF(mid,a1,b1,c1,d1); if xdiv>x then right:=mid; else left:=mid; end; until abs(xdiv-x)<0.001; result:=BezierF(xdiv,a2,b2,c2,d2); end;
вся фишка, что у тебя рекурсия ховстовая, и она раскручивается в цикл) Ну а вызов функции всегда затратней, чем обычный цикл, ибо при вызове функции дополнительные действия происходят по передаче параметров и работе со стеком.
О, да! Свершилось!!! Алексбонд, выкладывай скорее, не терпится заняться анимацией
------------------------------------------------------------- And when the sun is shining, there is justice for all... And all the people will remember that funny "war". War, which was so dark in the beginning and so shiny in the end. But now it's over. Over for all. ------------------------------------------------------------- Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.