Автор работы: Пользователь скрыл имя, 22 Мая 2013 в 20:33, дипломная работа
Целью данной выпускной работой является создание программы, симулирующей астрофизические процессы . Целевой аудиторией данной программы являются школьники старших классов и студенты младших курсов. Разработка велась с использованием технологии Javascript.
Также, для увеличения скорости
распространения программы
Репрезентация физических понятий и их отношений в javascript.
Прежде всего следует договориться об принимаемых в расчёт физических понятиях и их отношениях, выраженных в формулах.
Прежде всего, стоит ввести переменные, отбражающие к-во частиц(тел) в системе, их массу и область задания их функции по пространству.
var numParticles = 300;
var initialMassRange = [2, 12];
var initialMaxDistance = 600;
Так или иначе, простврантво, масса и другие физ. Величины будут дискретны в силу ограниченности вычислительны способностей компьютера. Поэтому, репрезентация столкновений и объединений также должна быть дискретной.
// необходимое рассояние для силияния 2х тел
var collisionThreshold = 1.5;
Также следует выделять оьекты с большей массой от других для большей наглядности.
var sunThreshold = 500;
Измерение величины массы проще всего представить на логарифмической шкале, т.к. она репрезентирует больше информации на меньшем геометрическом отрезке.По умолчанию предполагается взятие предпологается логарифма по основанию 2.
var binMass = function(mass) {
for (var i=massHistogram.length-1; i>=0; i--){
if (mass > pow(2, i)) {
return i;
}
}
};
Любая частица(тело) может быть представлено как обьект, имеющий свойствами положение в пространстве, по х _Y_z , скорость и массу.
Для большей репрезентативности обьект также обладает свойством размер, который напрямую зависит от его массы.
var Particle = function(x, y, z, v, m) {
this.position = [x, y, z];
this.velocity = v;
this.mass = m;
this.combineWith = [];
this.getRadius = function() {
this.radius = pow(this.mass, 1/3);
};
Маркировка расстояния отдельной частицы может проводиться, например, цветом.
his.draw = function() {
var d = (this.position[2] + 0.5 * colourScale) /
colourScale;
if (d < 0.05) { d = 0.05; }
else if (d > 1) { d = 1; }
Поскольку время и пространство
дискретно, то понятие «движение»
this.move = function() {
this.position[0] += this.velocity[0];
this.position[1] += this.velocity[1];
this.position[2] += this.velocity[2];
};
Вопрос притяжения частиц рассматривался с позиции чисто ньютоновской мезанике, где сила притяжения между частицами прямопропорционально равна произведению масс и обратнопропорционально квадрату расстояния между ними.
Ускорение же может быть репрезентировано как величина, умножаемая на скорость и, как следствие, таким образом увеличивая или уменьшая вышеупомянутую.
this.attract = function(that) {
var dx = this.position[0] - that.position[0];
var dy = this.position[1] - that.position[1];
var dz = this.position[2] - that.position[2];
var d2 = dx * dx + dy * dy + dz * dz;
var d = sqrt(d2);
var force = this.mass * that.mass / d2;
force *= GRAVITATIONAL_CONSTANT;
var accel1 = force / this.mass;
var accel2 = force / that.mass;
dx /= d;
dy /= d;
dz /= d;
this.velocity[0] -= accel1 * dx;
this.velocity[1] -= accel1 * dy;
this.velocity[2] -= accel1 * dz;
that.velocity[0] += accel2 * dx;
that.velocity[1] += accel2 * dy;
that.velocity[2] += accel2 * dz;
};
Стартовая позиция состояния системы описывается следующисм
var phi = random() * 360;
var theta = acos( random() * 2 - 1 );
var r = initialMaxDistance * pow(random(), 1/3);
var x = r * sin(theta) * cos(phi);
var y = r * sin(theta) * sin(phi);
var z = r * cos(theta);
var v;
if (startWithRotation) {
var d = initialSpin / sqrt(x*x + y*y);
v = [random() * d * y,
random() * d * -x,
random() * 0.2 - 0.1];
} else {
v = [random()-0.5, random()-0.5, random()-0.5];
}
var m = initialMassRange[0] + random() * massRange;
if (m > maxMass) { maxMass = m; }
totalMass += m;
massHistogram[binMass(m)] += 1;
particles.push(new Particle(x, y, z, v, m));
}
return particles;
Также , для удобной репрезентации гистограмма должна занимать мало места, отображать изменение распределения массы ,количесво тел в системе, массу самого массивного обьекта и расстояние до самого отдалённого от центра.Также должна присутствовать возможность остановки и возобновления симуляции.
Информация о работе Симуляция движения скоплений масс в галактиках спирального типа (S)