Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Выстрел с упреждением Добавлено: 05.06.06 16:59  

Автор вопроса:  AgentFire | ICQ: 192496851 
Имеется 2х-мерная система координат, имеется 2 объекта(первый и второй), первый стоит на месте, второй движется прямолинейно-равномерно со скоростью V2. Первому объекту необходимо выстрелить по второму.
Снаряд, выпущенный первым объекстом имеет V1=const, причем V1 > V2 т.е. снаряд ВСЕГДА догонит второй объект.
Имеются координаты двух объектов (x1,y1), (x2,y2).
Необходимо всего лишь найти угол, под которым нужно выстрелить по второму объекту чтоб снаряд 99% попал по нему(можно 100%)

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 05.06.06 18:02
Во во! я тоже пытался решить, но немного с другого угла: вот я играю в баскетбол и мимо меня передо мной прокатывается мяч, который мне надо поймать. Допустим, я иду быстрее, чем он катится но я так и не понял (хотя пытался) по какой формуле расчитать угол (мепонятно даже к чему между прочим гыгы)

но мне кажется, тебе нужен треугольник типа вот этого (http://www.lesfiles.h15.ru/images/diagram.jpg) с тремя известными сторонами и тебе осталось только найти угл А

Ответить

Номер ответа: 2
Автор ответа:
 Sergey



ICQ: 283551900 

Вопросов: 1
Ответов: 74
 Профиль | | #2 Добавлено: 05.06.06 21:20
Летящий объект на момент выстрела имеет координаты (x1,y1) и скорость (V1x,V1y).
Пушка находиться  в точки (x2,y2) на момент выстрела и стреляет с скоростью V и углом A или с скоростью (V2x,V2y).
V2x = V*cos(A)
V2y = V*sin(A)

Формула полета объекта  ;(F1x(t),F1y(t)).
Формула полета снаряда  ;(F2x(t,V,A),F2y(t,V,A)).

Нужно найти такие t,V,A чтоб выполнялось условие  F1x(t)= (F2x(t,V,A) и F1y(t)=
У нас:
F1x(t) = x1+Vx1*t
F1y(t) = y1+Vy1*t
F2x(t,V,A) = x2+ V*cos(A)*t
F2y(t,V,A) = y2+ V*sin(A)*t
Подставляем
x1+V1x*t = x2+ V*cos(A)*t
y1+V1y*t = y2+ V*sin(A)*t
получаем
x12=x1-x2
y12=y1-y2
V(A)=  ;(x12*V1y-y12*V1x)/(x12*sin(A)-y12*cos(A))

A для  A(V):
Q(V)=(x12*V1y-y12*V1x)/V
x12*sin(A)-y12*cos(A)) =Q(V)

 a*cos(A)+b*sin(A)=sqrt(a*a+b*b)*cos(A-acos(a/sqrt(a*a+b*b))
или
 a*cos(A)+b*sin(A)=sqrt(a*a+b*b)*cos(A-asin(b/sqrt(a*a+b*b))

S = sqrt(x12*x12+y12*y12)
x12*cos(A)-y12*sin(A)= S*cos(A+acos(x12/S) )
или
 x12*cos(A)-y12*sin(A)= S*cos(A+asin(y12/S) )

S*cos(A+acos(x12/S)) =Q(V)
или
S*cos(A+asin(y12/S))=Q(V)

A(V)= acos(x12/S) +(+-)acos(Q(V)/S)+Pi./2   (1)
или
A(V)= asin(y12/S) +(+-)acos(Q(V)/S)+Pi/2     (2)

Pi./2 откуда взялось не зною подбором взял!!
(+-) лучше брать (–) будет правильный угол/ если взять (+) то время будет отрицательное :)

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 06.06.06 08:52
Да ты гений Серега! )
Единственная поправочка - скорость снаряда у меня постоянная... но я разберусь, думаю!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам