![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Пытаюсь сделать такой эффект, некий груз предположим шарик висит на нитке (верхний край нитки зафиксирован), нитка и шарик ведут себя согласно всем законам гравитации, нитка не упругая, а фиксированной длинны. Шарик перетаскивается с помошью мыши. Порыскав на форуме, почитав физику за 9 класс и тд, добился следушего:
this.createEmptyMovieClip("line", 1);
this.line.init = function(num, len) {
this.len = len;
this.point = [];
for (var i = 0; i<num+1; i++) {
var t = new Object();
t.x = 0+i*20;
t.y = 200;
this.point.push(t);
}
};
this.line.onEnterFrame = function() {
this.point[0].x = 100
this.point[0].y = 100;
this.gravity = 30;
this.clear();
this.lineStyle(0, 0, 100);
this.moveTo(this.point[0].x, this.point[0].y);
for (var i = 1, len = this.point.length; i<len; i++) {
this.point[200].x = _root.g._x;
this.point[200].y = _root.g._y;
//[x1,y1] и [x2,y2] - координаты предыдущей и текущей точки соответственно
var x1 = this.point[i-1].x, y1 = this.point[i-1].y;
var x2 = this.point[i].x, y2 = this.point[i].y;
// xd и yd - разница расстояний между точками
var xd = x2-x1
var yd = y2-y1+this.gravity;
//dist - расстояние между точками
var dist = Math.sqrt(xd*xd+yd*yd);
//коррекция расстояния между точками до требуемого (через подобие)
this.point[i].x = x1+(xd*this.len)/dist;
this.point[i].y = y1+(yd*this.len)/dist;
this.lineTo(this.point[i].x, this.point[i].y);
}
};
this.line.init(200, 1);
В общем подскажите, буду очень благодарен, если у кого есть материал на эту тему или собственное решение, прошу поделиться. Заранее благодарю. Последний раз редактировалось _Nickromant_; 06.02.2008 в 20:18. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Имхо, про кривые безье нужно читать.
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Находил на форуме ссылку на алгоритмы на основе, кривых Пьера Безье, но к сажелению, они оказались битыми =(, а то что помог найти мне Google, с програмированием связанно слабо в основном теоретический матерьял без применения.
Если у кого есть ссылка, буду благодарен. Последний раз редактировалось _Nickromant_; 06.02.2008 в 20:57. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Про кривые безье тут:
http://www.bezier.ru/ |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Obi, хотел уже писать гневный пост с примерно таким содержанием:
"Этот сайт я видел и по кривым Безье, там нечего нет, кроме названия, а вы Obi, проверяйте инфармацию прежде чем ее давать." Но во время одумался и посмотрел сайт в IE оказалось все нормально, не поверите но в Опере сайт выглядит, совершенно иначе, там ровным счетом 3 покалеченных ссылок =( и не капли про кривые Бюзье. Благодарю, так сказать, за то что открыли мне глаза =). Буду читать, но всеже хотелось бы советов конкретно по моему случаю. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Там пакет классов для АС2 как раз, Дембицкий писал.
|
|
|||||
|
loading 50%
|
Цитата:
Тогда причем тут "фиксированной длины"? Шарик, весящий на упругой натянутой нити (струне) это маятник - при чем тут кривые Безье? Моделирование поведения нити, к которой привязан шарик в произвольном случае тянет как минимум на кандидатскую по математике. ЗЫ: задачу нужно коректно формулировать. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
http://www.cove.org/flade/demos/demo1.htm -- кандидатская?
В середине тележки квадрат на нитке, насколько я понял, автору как-раз это и нужно. |
|
|||||
|
loading 50%
|
Obi, ваша способность искать всякие вкусности на флеше конечно радует, осталось научиться связывать увиденое с поставленым вопросом. В последнем примере ваще не нить. А кандидатская может получиться, если Вы сами напишите такой же движок.
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Цитата:
Цитата:
Цитата:
ЗЫ Посмотрите код пожалуйста, там по сути 2 проблемы остались, Как прикрепить груз к концу веревки и как заставить двигаться веревку при перемешении груза. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|