PDA

Просмотр полной версии : Создание графика


тарзан
26.03.2006, 20:28
Задача такова:
Имеется осциллограф на экране которого из начала координат
рисуется синусоида например с периодом 2Т.
Подскажите пожалуйста как нарисовать график синусоиды

тарзан
26.03.2006, 23:05
Вот нашел на форуме такой код

var ampX=25;
var ampY=25;
var x=50;
var y=50;
_root.lineStyle(1,0x000000,100);
_root.moveTo(x,y);
for(i=1;i<10;i++){
if(i%2!=0){
_root.curveTo(x*i+ampX,y-ampY,x*i+2*ampX,y);
}
else{
_root.curveTo(x*i+ampX,y+ampY,x*i+2*ampX,y);
}
}

Помогите слелать для него прорисовку (т.е. его медленное рисование на экране)
И как можно сделать его не таким пологим а немного по круче (холмы были бы немного поближе
и повыше)

K.A.T.A.F.A.L.K.E.R
27.03.2006, 00:48
гадом буду не синусоида это!!! Ох не синусоида... Нечто похожее, но не оно... К тому же curveTo для плавной прорисовки тебе не прокатит - рисуй через lineTo с небольшим шагом...

Gaen
27.03.2006, 06:13
Можно конечно изврититься и при помощи BitmapDat'ы замутить попиксельную прорисовку...

Король
27.03.2006, 06:24
Задача такова:
Имеется осциллограф на экране которого из начала координат
рисуется синусоида например с периодом 2Т.
Подскажите пожалуйста как нарисовать график синусоиды
график синусоиды (как это ни удивительно) -
x = Math.sin(y)
вот тебе и все координаты.

тарзан
27.03.2006, 12:24
блин фигня какая выскакивает с ошибкой. :o
Помогите плиз написать прорисовку для синусоиды :o

__i
27.03.2006, 13:49
A - амплитуда.
t - время (можно задавать просто числом, можно изменять в сетинтервал или он ентерфрейм)
k - коэфициент который изменяет длинну волны.

y - координата y зависит от времени меняеться в диапазоне [-A..A]

x - тоже зависит от времени

this.lineStyle(1);
k=1; //1 период, 2 - 2 периода .....
A=100;
for (t=0; t<360; t++){ //360 - один период
x = t;
y = A*Math.sin(k*x*Math.PI/180);
this.lineTo(x,y);
}


ЗЫ, и вообще ребятки когда будем думать чемто кроме того что ниже пояса ? геометрия 9 класс если не 7 млин.

тарзан
27.03.2006, 14:36
а как ее прорисовать???

Samodelkin
27.03.2006, 15:25
Используй setInterval

тарзан
27.03.2006, 15:41
в какой из строк имено.
а то у меня немного проблемно с методами AS

тарзан
27.03.2006, 21:53
Люди, будьте добры подскажите как реализовать прорисовку.

KUZEN
27.03.2006, 22:08
Люди, будьте добры подскажите как реализовать прорисовку.
Так написали же всё или тебе нужна анимация прорисовки ?!

KUZEN
27.03.2006, 22:15
Если да то вот как то так

_root.createEmptyMovieClip("mc",1);
mc._y = 200;
mc.lineStyle(1);
k = 10;
//1 период, 2 - 2 периода .....
A = 50;
count = 0;
F_draw = function () {
//360 - один период
x = count;
y = A*Math.sin(k*x*Math.PI/180);
mc.lineTo(x, y);
count++;
};
setInterval(F_draw, 10);

тарзан
27.03.2006, 22:16
большое тебе спасибо

KUZEN
27.03.2006, 22:16
-=UP=-

тарзан
27.03.2006, 22:29
у меня возникли вопросы по коду:
1) _root.createEmptyMovieClip("mc",1) что это за функция
и в какой момент она начинает выполняться (как onEnterFrame или нет???)
и что у нее за параметры ("mc",1)
2) где вызывается объявленная и описанная функция F_draw

KUZEN
27.03.2006, 22:35
Уууууууууууу читаем форум милионы раз обсуждалось, ну а createEmptyMovieClip("mc",1) это ваще ....

Olmer
27.03.2006, 22:46
У меня тут такой вопрос, а существует ли универсальный алгоритм построения графика (на флеше естесвенно)?
Или просто как построить график по точкам?

тарзан
27.03.2006, 22:49
не ну спервым я уже разобрался
а со вторым - где вызов то. Никак это - setInterval(F_draw, 50);

а можно мувик (жирная точка) заставить прорисовать
синусоиду???

Olmer
27.03.2006, 23:19
Я тебя понять немогу, она и так прорисовывается!!!!!!!!

KUZEN
27.03.2006, 23:45
не ну спервым я уже разобрался
а со вторым - где вызов то. Никак это - setInterval(F_draw, 50);

а можно мувик (жирная точка) заставить прорисовать
синусоиду???
Интересно для кого хелп на русский переводили ?!

KUZEN
27.03.2006, 23:45
:yahoo:

_root.createEmptyMovieClip("mc", 1);
mc._y = 200;
k = 10;
A = 0;
count = 0;
F_draw = function () {
if (count<500) {
mc.lineStyle(count/20, random(0xFFFFFF), 100, false, "none", "round", "miter", 1);
x = count;
y = A*Math.sin(k*x*Math.PI/180);
mc.lineTo(x, y);
count++;
A += 0.2;
updateAfterEvent();
} else {
clearInterval(_root.interval);
}
};
interval = setInterval(F_draw, 20);

тарзан
27.03.2006, 23:54
извиняюсь за вопрос: Где можно скачать этот русский хелп :confused:

KUZEN
28.03.2006, 00:07
Может всётаки раскроем глаза и посмотрим ... в каждом рахделе об этом написано ...

__i
28.03.2006, 00:11
KUZEN ты супер терпелив %)))

KUZEN
28.03.2006, 00:14
KUZEN ты супер терпелив %)))
Это была последняя капля )))

тарзан
28.03.2006, 00:32
Мда... После 10-ти часов за базой данных FoxPro я уже ничего не вижу.
Еще раз извиняюсь. :rolleyes:

Olmer
28.03.2006, 00:39
ЛЮЮЮЮЮЮЮДИ помогите!! Как построить любой график функции???
типа y = x*x*x*x - 5*x*x +4;
почему такой скрипт не отрабатывает?

f = function(x:Number):Number{
y = x*x*x*x - 5*x*x +4;
return(y);
}
this.createEmptyMovieClip("graf",1);
_root.graf.lineStyle(1,0x000000);
_root.graf.moveTo(-4,f(-4));
for(x=-4;x<4;x+=0.001){
_root.graf.lineTo(x,f(x));
}

KUZEN
28.03.2006, 01:23
Мда... После 10-ти часов за базой данных FoxPro я уже ничего не вижу.
Еще раз извиняюсь. :rolleyes:

Тяжёлый случай )))
http://www.flasher.ru/forum/showthread.php?t=72460

KUZEN
28.03.2006, 01:30
ЛЮЮЮЮЮЮЮДИ помогите!! Как построить любой график функции???
типа y = x*x*x*x - 5*x*x +4;
почему такой скрипт не отрабатывает?

f = function(x:Number):Number{
y = x*x*x*x - 5*x*x +4;
return(y);
}
this.createEmptyMovieClip("graf",1);
_root.graf.lineStyle(1,0x000000);
_root.graf.moveTo(-4,f(-4));
for(x=-4;x<4;x+=0.001){
_root.graf.lineTo(x,f(x));
}
Ещё один ... тоже со зрением плохо ... где рисуешь там и появляется ... :mosking:

Olmer
28.03.2006, 09:39
Можешь нормально обьяснить я не за этим на форум хожу......

KUZEN
28.03.2006, 13:34
Чего обьяснять, когда всё работает ... я за чем ты на форум ходишь я не знаю ...

Olmer
30.03.2006, 01:14
у меня такой вопрос:
допустим у меня есть текстовое поле ввода. В это поле я ввожу какую ниб. функцию типа sin(x). Как мне сделать так чтобы флеш обработал значение текстового поля ни как текст а как выражение?

valvika
30.03.2006, 01:51
у меня такой вопрос:
допустим у меня есть текстовое поле ввода. В это поле я ввожу какую ниб. функцию типа sin(x). Как мне сделать так чтобы флеш обработал значение текстового поля ни как текст а как выражение?
Это уже нужно серьезно кодировать. Можешь заказать в разделе работа. На сто-четыреста функций вполне реально сделать.
Но еще раз повторю - это не 15 мин., поэтому в раздел работа. Тем методом, который я знаю стоимость примерно 40 зеленых.

Olmer
30.03.2006, 10:17
т.е. ты хочешь сказать что тут будет идти просто сравнение? хм, неужели в Macromedia не предусмотрели? :(

Olmer
30.03.2006, 10:18
Чего обьяснять, когда всё работает ... я за чем ты на форум ходишь я не знаю ...
В том-то и дело, что работает, но неправильно. :(

build_graf = function(xmin,xmax,scale,step){
this.createEmptyMovieClip("graf",2);
_root.graf.lineStyle(2,0xFF0000);
_root.graf.moveTo(scale*xmin,-scale*f(xmin));
for(x=xmin;x<xmax;x+=step){
_root.graf.lineTo(scale*x,-scale*f(x));
}
}
Вот так работает правильно, но плохо отрабатывают графики функций типа y=tan(x). Хотя sin и cos работают норм.

motor4ik
30.03.2006, 11:58
вот люди наивные...как же это так...макромедиа не предусмотрела..я в вожу в текстовое поле "пиво" а на экране не появляется картинка пива...вот сволочи не думают о людях совсем! :)

motor4ik
30.03.2006, 11:59
"Вот так работает правильно, но плохо отрабатывают графики функций типа y=tan(x). Хотя sin и cos работают норм."

есть просто такие понятия как математика или математическое моделирование, программирование итд. и флэш тут не при чем!

Olmer
30.03.2006, 14:34
есть просто такие понятия как математика или математическое моделирование, программирование итд. и флэш тут не при чем!
Эх, только как это предусмотреть?
Еще вопрос, у меня есть 2 мувиклипа создоваемые скриптом, как сделать так чтобы эти два мувиклипа лежали в третем?

motor4ik
30.03.2006, 14:35
создать их в третьем

Olmer
30.03.2006, 14:36
а можно их не создовать в третем, а потом преобразовать в третий?

Samodelkin
30.03.2006, 14:56
Как говорят на мембране, иди учи матчасть.
:D