Показать сообщение отдельно
Старый 31.07.2009, 22:01   #13
ZloyPetrushkO
Местный
 
Регистрация: 31.05.2008
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от SJack Посмотреть сообщение
Не, ты не понял. Вектор на цель у нас уже есть. Потому что проверку я предлагаю делать именно в тот момент, когда пушка вычисляет этот самый вектор. Вычислили? Вычислили. А теперь посмотрели, куда эта самая цель летит. Ага, на нас летит. Ну, побежали.
Как-то так. Вся операция усложняется на одно скалярное произведение векторов и парочку сравнений. Быстрее не выйдет, имхо. Конечно, если каждый такт смотреть вектора всех рядомнаходящихся - то это ни в какие ворота.
ну ты тоже немного не понял суть моей идеи. она в общем то очень схожа с твоим принципом, однако основное отличие вот в чем- я предлагаю работать с азимутами и глами поворота орудия, нежели с векторами.
ибо, как показали мои тесты со временем спутного следа, при работе с 3хмерными точками уже четко заметно падение производительности по сравнению с 2 мерными( собсна почму у меня спутный след-ето цилиндр)
что уж говорить про первичную проверку, пусть лучше сравнит азимут и угол поворота.
и коор-ты сравнивать не придеться.ибо углы могут совпадать только если самолет летит на оружие(ибо зенитка то считает только для 1 цели и поворачиваеться на нее)
вот кратко то, что я расписывал вчера
---

теперь по реализаци что известно сейчас( на сегодня)
дистанция определяеться вот так :
double d = point3d.distance(point3d_35_);

угол поворота орудия
System.out.println( " headYaw " + headYaw );
( ну тут строчка на вывод. но смысл ясен )

координаты зены:
Point3d point3d_35_ = Aimer.GetHunterFirePoint();

азимут самолета цели берем вот так :
double az = actor.pos.getAbsOrient().azimut();
причем как ты правильно заметил- пусть она спрашивает только о цели. тогда даже никаких циклов организовывать не надо

вот так берем про облака
int iii = Mission.curCloudsType();
float cloudtop = (float) ( Mission.curCloudsHeight() );

вот тут влияние погоды на стрельбу
float f_44_ = i > 4 ? 300.0F : 500.0F;
чем меньше ставим-тем пьянее получаем зену: она позже нас замечает и косее стреляет
я думаю уменьшить ети коэфф-ты.или посильнее привязать их к погоде. в идеале-зена не будет стрелять выше облаков 4+

f_45_ = (f_45_ - 1.0F) / 9.0F * 2.0F + 1.0F;
f_41_ *= f_45_;
что ето я не понял, но оно влияет


так что вроде все инструменты есть...
начал ковырять примерный код проверок.
и предлагаю в случае если зена "напугана" отправлть ее на перезарядку. на крайняк- юзать остановку огня

а вот терь небольшая проблемка.
человеки пускаються
public void LaunchHumans()
( CarsGeneric.LaunchHumans(); )
но вся артиллерия- ето идет статик, а не воид. и ессна етот метод работать отказываеться.
вот над етим пока думаю....
ост вроде хватает, начал работу. примерный код накидал, довожу до ума.
пока вот ето единственная загвоздочка(

Последний раз редактировалось ZloyPetrushkO; 01.08.2009 в 00:15.
ZloyPetrushkO вне форума   Ответить с цитированием