PDA

Просмотр полной версии : Проблема с программным рисованием. Как сделать функцию?


nias
02.12.2008, 19:27
здраствуйте уважаемые флешеры. У меня проблемы с программным рисованием.
Уменя есь модель идеального газа(взятл из книги Дмитрия Гурского). Мне нужно чтобы у меня В, в отдельном кадре, прлеере была нарисована финкция по уравнению Максфела распределения молекул по температуре.
f(x) = (4/sqrt(PI))*pow((m/2*k*T),3/2)* pow(v,2)*exp((m*pow(v,2))/2*k*T)
:umnik2:
где m- масса молекулы(вводим сами)
k - постояная Больцмана (константа)
T - температура по Кельвину
v - переменная скорости
Т.е ваш Y есть колличество молекул, а Х скорость
я делаю так:

_root.linestyle (2, 0x0000FF, 100);
_root.moveTo ( 0, 200);
for (v=0, v<=100; v+=0,5){
_root.lineTo(0+1000, формула);
}

У меня должна получится линия напоминающая перевёрнутую парабулу.
Но у меня получается просто прямая линия
Таким Макаром я меня получается любая функция, а вот эта чо то нет.
Не могли бы вы помочь!!! Плиззззззз!!!!!!:D

Dragon rideR
02.12.2008, 23:23
Дай значения всех остальных переменных кроме v

iNils
02.12.2008, 23:42
Дробь пишется через точку, а не запятую.

Mnilionic
03.12.2008, 01:27
потому что куча опечаток и ошибок

var mc = this.createEmptyMovieClip("lines", 1);
mc._x = 200; mc._y = 200;
mc.lineStyle (2, 0x0000FF, 100);


var contrast = 10;

for (var v = 0; v <= 10; v++){
// ставите ваше формулу
var result = Math.pow(v, 2);
mc.lineTo(v * contrast, result);
}


Добавлено через 33 минуты
если не наврал со значениями и ваша формула верно то:

var k = 1.3806504 * Math.pow(10, -23);
var T = 300; // комнатная
var m = 3.3 * Math.pow(10, -27); // водорот
function f(v){
return (4 / Math.sqrt(Math.PI)) * Math.pow((m/2*k*T),3/2)* Math.pow(v,2)*Math.exp((m*Math.pow(v,2))/2*k*T)
}


var mc = this.createEmptyMovieClip("lines", 1);
mc._x = 200; mc._y = 200;
mc.lineStyle (2, 0x0000FF, 100);


var contrast = Math.pow(10, 68);

for (var v = 0; v <= 100; v++){
var result = f(v);
var x = v, y = Math.round(result * contrast);
mc.lineTo(x, y);
//trace(y)
}

nias
05.12.2008, 18:16
спасибо флешеры за предыдущую помощь. Но дело в том что любая другая функция у меня и получалась до этого. Проблема была именно с этой фкнкцией.
f(v) = (4/sqrt(PI)*pow((m/2*k*T),1.5)*pow(v,2)*exp(m*pow(v,2)/2*k*T)
Где v - скорсть
Т - температура по Кельвину.
m - масса малекулы.
k - постоянная Больцмана.
Я попытался сделать trace (f(v)) у меня она вещественная может он проблемма в этом потому что я пытаюсь округлить у меня получлся 0.

Mnilionic
05.12.2008, 18:19
ну если 0.00001151 * 10 в -63 степени округлить, то ноль и получиться :D.
Я вам привёл рабочий код с вашей формулой.