![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 9
|
Помогите пожалуйста!
как мне описать физическое явление как магнетизм? у меня есть два объекта: движущийся шар и статический квадрат.Шар имеет положительную полярность.Квадрат может иметь два состояния и некоторую область, при попадании в которую происходят следующие события: 1)когда он положительно поляризован(в этом случае шар отталкивается от квадрата) и 2)отрицательно поляризован(соответственно притягивается) если есть какие идеи присылайте! Заранее благодарен! |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Между прочим, квадратный магнит создаст нетривиальный градиент магнитного поля вокруг, лучше взять ещё один шар
![]() А если принебречь формой, то это будет просто сила, обратно пропорциональная кварату расстояния между центрами предметов. Т.е. надо либо v+=k/((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)) либо v-=k/((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)), главное - подобрать k, чтобы натурально смотрелось ![]() В вашей школе совсем физики нет?
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Привет!
У меня не шары, но ... принцип тот же. Второй пример с урока не высылаю, там сосвсем просто. Разноименные стороны притягиваются. Магнит верхний падает с ускорением. Нижний при сближении чуть подпрыгивает. Оба слипаются и падают с грохотом вниз. Всё!. PS В приложенном примере только основная часть и подпись оставлены. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
вот я сейчас этим и занимаюсь
![]() пытаюсь сделать симулятор позитивных и негативных частиц вроде пока получается, вот мой прогресс на сегодняшний день: function G(me,obj1,obj2) {
me.onEnterFrame=function(){
for(i=0;i<obj1.length;i++){
var dx = this._x - obj1[i]._x
var dy = this._y - obj1[i]._y
var D=Math.sqrt(dx*dx+dy*dy)
var F=-100/D
if(Math.abs(F)<0.1|D<20){
F=0
}
if(D<5){
me._x=+10
}
angle = Math.atan2 (dy, dx);
me._x -= Math.cos (angle) * F
me._y -= Math.sin (angle) * F
}
for(l=0;l<obj2.length;l++){
var dx2 = this._x - obj2[l]._x
var dy2 = this._y - obj2[l]._y
var D2=Math.sqrt(dx2*dx2+dy2*dy2)
var F2=100/D
if(Math.abs(F2)<0.1|D2<20){
F2=0
}
angle2 = Math.atan2 (dy2, dx2);
me._x -= Math.cos (angle2) * F2
me._y -= Math.sin (angle2) * F2
}
"obj1"-это массив всех объектов от которых он отталкивается "obj2"-массив объектов к которым он претягивается тоесть если у нас есть негативные частички A1 и A2, и две позетивные частички B и B1, то функцию используем следуюшм образом: когда много частичек, то немного глючит, зато они строят интересные структуры в которых все силы сбалансированны.Код ещё нужно модернезировать, если кто захочет может помочь ![]()
__________________
Нано-флешер (в отставке) Последний раз редактировалось Therion; 09.11.2006 в 14:05. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 9
|
Всем большое спасибо! конкретно помогли, наконец пошло продвижение в работе
![]() ![]() |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
внимание в коде страшная оппечатка!
function G(me,obj1,obj2) {
me.onEnterFrame=function(){
for(i=0;i<obj1.length;i++){
var dx = this._x - obj1[i]._x
var dy = this._y - obj1[i]._y
var D=Math.sqrt(dx*dx+dy*dy)
var F=-100/D
if(Math.abs(F)<0.1|D<20){
F=0
}
if(D<5){
me._x=+10
}
angle = Math.atan2 (dy, dx);
me._x -= Math.cos (angle) * F
me._y -= Math.sin (angle) * F
}
for(l=0;l<obj2.length;l++){
var dx2 = this._x - obj2[l]._x
var dy2 = this._y - obj2[l]._y
var D2=Math.sqrt(dx2*dx2+dy2*dy2)
var F2=100/D2
if(Math.abs(F2)<0.1|D2<20){
F2=0
}
angle2 = Math.atan2 (dy2, dx2);
me._x -= Math.cos (angle2) * F2
me._y -= Math.sin (angle2) * F2
}
__________________
Нано-флешер (в отставке) |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|