Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с программным рисованием. Как сделать функцию? (http://www.flasher.ru/forum/showthread.php?t=118747)

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 есть колличество молекул, а Х скорость
я делаю так:
Код AS1/AS2:

_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

потому что куча опечаток и ошибок
Код AS1/AS2:

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 минуты
если не наврал со значениями и ваша формула верно то:
Код AS1/AS2:

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

ещо одна проблема с функцией. Как сделать функцию?2
 
спасибо флешеры за предыдущую помощь. Но дело в том что любая другая функция у меня и получалась до этого. Проблема была именно с этой фкнкцией.
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.
Я вам привёл рабочий код с вашей формулой.


Часовой пояс GMT +4, время: 12:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.