AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Моды для Ил-2 > Баллада об оружии

Важная информация

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.02.2010, 18:16   #1
JGr124_boRada
Местный
 
Регистрация: 19.02.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от ZloyPetrushkO Посмотреть сообщение
2 Борада
это ты прочитал или сделал такой вывод сам?
В процессе своего поверхностного ознакомления я нашел где написано что главное это именно скорость детонации
ЗЫ: с наступившем тя!
Главное для чего? Еще раз прошу очень внимательно прочитать определения бризантности и фугасности. И соответственно правильно соотнести расчеты. Основным поражающим действием авиабомбы в отношении техники является фугасный эффек а не бризантный, если только бомба не попадает прямо в объект. Обратите особое внимание на определения радиусов, r0 и причих.
Я вывод сделал по прочитанному, но не на одной странице, а в сумме. Почитай что тетенька пишет о давлении в различных ситуациях, как оно считается и что на это влияет и на каких радиусах и при каких диапазонах давления. Не надо выдирать как некоторые по одной строчке из текста
"Вдруг из маминой из спальни, одноногий и хромой, выбегает......"(с)

PS Спасибо, вообще-то завтра официально, хотя на самом деле 23:5* 12 го.

Последний раз редактировалось JGr124_boRada; 12.02.2010 в 18:27.
JGr124_boRada вне форума   Ответить с цитированием
Старый 12.02.2010, 19:30   #2
SLON
Местный
 
Аватар для SLON
 
Регистрация: 29.11.2009
Сообщений: 649
По умолчанию

Сразу скажу, что времени у меня малом, могу в некоторых моментах ошибаться...

package com.maddox.il2.ai;
import com.maddox.JGP.Point3d;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.ActorMesh;

public class Explosion
{
public static final int POWER_SPLASH = 0;
public static final int POWER_SPLINTERS = 1;
public static final int POWER_NAPALM = 2;
public static final float SPLINTER_MASS = 0.015F;
private static final float SPLINTERS_K = 0.9F;
public String chunkName;
public Point3d p = new Point3d();
public float radius;
public Actor initiator;
public float power;
public int powerType;
private float nSplinters;
Осколочное действие

расчет количества осколков
void computeSplinterParams(float f) {
float f_0_ = f * 0.9F;
по нашим прикидкам -это определение массы корпуса
nSplinters = f_0_ / 0.015F; количество полезных осколков массой 15гр
if (nSplinters < 0.5F) не понятно, но так думаем - условие округления
nSplinters = 0.0F;
}

расчет скорости осколка на траектории разлета
public float computeSplinterSpeed(float f) {
if (f <= 0.01F)
f - предполагаем, что эта некая дистанция, тогда, если выполняется то скорость = 650
return 650.0F;
if (f >= radius) если это растояние больше или равно радиусу (параметр для каждой бомбы) то скорость =150
return 150.0F;
float f_1_ = f / radius; коэффициент отношения некой дистанции к радиусу
return 650.0F * (1.0F - f_1_) + 150.0F * f_1_; я предполагаю, что это определение скорости летящего осколка
}

распределение осколков
public void computeSplintersHit(Point3d point3d, float f, float f_2_,
float[] fs) {
float f_3_ = (float) point3d.distance(p) - f; нахождение какого-то растояния
if (f_3_ <= 0.0010F) {
fs[0] = nSplinters * 0.5F;
fs[1] = computeSplinterSpeed(f_3_);
}
условие и запись толи в массив, толи в матрицу
float f_4_ = 3.1415927F * f * f; площадь окружности радиусом "f"
float f_5_ = 12.566371F * f_3_ * f_3_;площадь поверхности шара радиусом "f3" считали пару строчек выше
float f_6_ = nSplinters * f_4_ / f_5_; никак не вспомню отношение площадей помноженное на ко-во осколков
if (f_6_ >= nSplinters * 0.5F)
f_6_ = nSplinters * 0.5F;
fs[0] = f_6_;
fs[1] = computeSplinterSpeed(f_3_);
условие если ... больше половины количества осколков то брать половину.
}

public boolean isMirage() {
if (!Actor.isValid(initiator))
return true;
return initiator.isNetMirror();
}
кажется условие поражения осколками, просчет ведется думаю еще где-то, если кто дополнит буду признателен, нерехожу на фугас.

Последний раз редактировалось SLON; 12.02.2010 в 19:32.
SLON вне форума   Ответить с цитированием
Старый 12.02.2010, 22:11   #3
23AG_Black
Местный
 
Регистрация: 11.11.2009
Сообщений: 243
По умолчанию

Цитата:
Сообщение от SLON Посмотреть сообщение
Сразу скажу, что времени у меня малом, могу в некоторых моментах ошибаться...

package com.maddox.il2.ai;
import com.maddox.JGP.Point3d;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.ActorMesh;

public class Explosion
{
public static final int POWER_SPLASH = 0;
public static final int POWER_SPLINTERS = 1;
public static final int POWER_NAPALM = 2;
public static final float SPLINTER_MASS = 0.015F;
private static final float SPLINTERS_K = 0.9F;
public String chunkName;
public Point3d p = new Point3d();
public float radius;
public Actor initiator;
public float power;
public int powerType;
private float nSplinters;
Осколочное действие

расчет количества осколков
void computeSplinterParams(float f) {
float f_0_ = f * 0.9F;
по нашим прикидкам -это определение массы корпуса
nSplinters = f_0_ / 0.015F; количество полезных осколков массой 15гр
if (nSplinters < 0.5F) не понятно, но так думаем - условие округления
nSplinters = 0.0F;
}

расчет скорости осколка на траектории разлета
public float computeSplinterSpeed(float f) {
if (f <= 0.01F)
f - предполагаем, что эта некая дистанция, тогда, если выполняется то скорость = 650
return 650.0F;
if (f >= radius) если это растояние больше или равно радиусу (параметр для каждой бомбы) то скорость =150
return 150.0F;
float f_1_ = f / radius; коэффициент отношения некой дистанции к радиусу
return 650.0F * (1.0F - f_1_) + 150.0F * f_1_; я предполагаю, что это определение скорости летящего осколка
}

распределение осколков
public void computeSplintersHit(Point3d point3d, float f, float f_2_,
float[] fs) {
float f_3_ = (float) point3d.distance(p) - f; нахождение какого-то растояния
if (f_3_ <= 0.0010F) {
fs[0] = nSplinters * 0.5F;
fs[1] = computeSplinterSpeed(f_3_);
}
условие и запись толи в массив, толи в матрицу
float f_4_ = 3.1415927F * f * f; площадь окружности радиусом "f"
float f_5_ = 12.566371F * f_3_ * f_3_;площадь поверхности шара радиусом "f3" считали пару строчек выше
float f_6_ = nSplinters * f_4_ / f_5_; никак не вспомню отношение площадей помноженное на ко-во осколков
if (f_6_ >= nSplinters * 0.5F)
f_6_ = nSplinters * 0.5F;
fs[0] = f_6_;
fs[1] = computeSplinterSpeed(f_3_);
условие если ... больше половины количества осколков то брать половину.
}

public boolean isMirage() {
if (!Actor.isValid(initiator))
return true;
return initiator.isNetMirror();
}
кажется условие поражения осколками, просчет ведется думаю еще где-то, если кто дополнит буду признателен, нерехожу на фугас.
писец... если это так и есть... Давно я таких шаровых коней в вакууме не видел...
Осколки мы значит по площади шара равномерненько разбрасываем... дожили, мля... Я кажется теперь догадываюсь, кто написал муйню про вероятность поражения осколками гранаты Ф1 на дистанции 200 метров... (или откуда черпали вдохновение илоделы)...
Цирк уехал, клоуны остались...

Последний раз редактировалось 23AG_Black; 12.02.2010 в 22:13.
23AG_Black вне форума   Ответить с цитированием
Старый 12.02.2010, 23:47   #4
ZloyPetrushkO
Местный
 
Регистрация: 31.05.2008
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от 23AG_Black Посмотреть сообщение
писец... если это так и есть... Давно я таких шаровых коней в вакууме не видел...
Осколки мы значит по площади шара равномерненько разбрасываем... дожили, мля... Я кажется теперь догадываюсь, кто написал муйню про вероятность поражения осколками гранаты Ф1 на дистанции 200 метров... (или откуда черпали вдохновение илоделы)...
Цирк уехал, клоуны остались...
не, ето явно не перебьет бомб, разгоняющихся в полете и обгоняющих самолет

в общем ето можно поправить. несложно. была бы зависимость
ZloyPetrushkO вне форума   Ответить с цитированием
Старый 13.02.2010, 07:45   #5
23AG_Black
Местный
 
Регистрация: 11.11.2009
Сообщений: 243
По умолчанию

Цитата:
Сообщение от ZloyPetrushkO Посмотреть сообщение
не, ето явно не перебьет бомб, разгоняющихся в полете и обгоняющих самолет

в общем ето можно поправить. несложно. была бы зависимость
Впринципе, да... Что-то я разволновался сильно...
Уж очень упрощенно получается.
"Человек сам кузнец своего счастья."
23AG_Black вне форума   Ответить с цитированием
Старый 12.02.2010, 23:45   #6
ZloyPetrushkO
Местный
 
Регистрация: 31.05.2008
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от SLON Посмотреть сообщение

Осколочное действие

расчет количества осколков
void computeSplinterParams(float f) {
float f_0_ = f * 0.9F;
по нашим прикидкам -это определение массы корпуса
nSplinters = f_0_ / 0.015F; количество полезных осколков массой 15гр
if (nSplinters < 0.5F) не понятно, но так думаем - условие округления
nSplinters = 0.0F;
}
эт вроде все точно написал, добавить нечего


Цитата:
Сообщение от SLON Посмотреть сообщение


расчет скорости осколка на траектории разлета
public float computeSplinterSpeed(float f) {
if (f <= 0.01F)
f - f ето дистанция от цели до взрыва. если дистанция меньше, тогда, если выполняется то скорость = 650
return 650.0F;
if (f >= radius) если это растояние больше или равно радиусу (параметр для каждой бомбы) то скорость =150
return 150.0F;
float f_1_ = f / radius; коэффициент отношения дистанции между эпицентром и целью к радиусу
return 650.0F * (1.0F - f_1_) + 150.0F * f_1_; я предполагаю, что это определение скорости летящего осколка
}
почти все верно, внес небольшие правки красным


Цитата:
Сообщение от SLON Посмотреть сообщение


распределение осколков
public void computeSplintersHit(Point3d point3d, float f, float f_2_,
float[] fs) {
float f_3_ = (float) point3d.distance(p) - f; нахождение растояния между взрывом и целью
if (f_3_ <= 0.0010F) {
fs[0] = nSplinters * 0.5F;
fs[1] = computeSplinterSpeed(f_3_);
}
условие и запись в массив
float f_4_ = 3.1415927F * f * f; площадь окружности радиусом поражения бомбы(radius)
float f_5_ = 12.566371F * f_3_ * f_3_;площадь окружности с диаметром, равным расстоянию между целью и взрывом
float f_6_ = nSplinters * f_4_ / f_5_; никак не вспомню отношение площадей помноженное на ко-во осколков
if (f_6_ >= nSplinters * 0.5F)
f_6_ = nSplinters * 0.5F;
fs[0] = f_6_;
fs[1] = computeSplinterSpeed(f_3_);
условие если ... больше половины количества осколков то брать половину.
}
Цитата:
Сообщение от SLON Посмотреть сообщение



public boolean isMirage() {
if (!Actor.isValid(initiator))
return true;
return initiator.isNetMirror();
}
кажется условие поражения осколками, просчет ведется думаю еще где-то, если кто дополнит буду признателен, нерехожу на фугас.
непарься с етим. ето нужно для сетевой игры, когда взрыв рассчитываеться на др компе, а игрок видит только етот самый "мираж"
ZloyPetrushkO вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 20:58. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru