Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-04-2006, 13:44   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 27
Mathematische Formel in AS Teil II

Hallo! Ich hatte schon Mal gepostet, weil ich Probleme damit hatte, komplizierte mathematische Formeln mit Hilfe von AS zu schreiben.
Jetzt habe ich das geschafft eine Funktion zu erstellen, mit der ich z.B Indizen schreiben kann (siehe Beispiel).
Was ich jetzt eigentlich schreiben möchte, ist folgende Funktion:
Jn (x)=Sigma(0 bis unendlich) [(-1)hoch(k)*(x/2)hoch(n+2k) das ganze durch (k!)*(n+k)!].
Dann wird es ein bisschen schwieriger (Für mich als AS Anfänger:-))
Wer könnte mir bitte helfen mein Programm so zu ändern, damit ich die Funktion Jn(x) schreiben kann?

Hier ist mein Beispiel:

// Darstellung "Mathematischer Funktionen"

//Festlegung unterschiedlicher Textformate
var txtF1 = new TextFormat();
txtF1.font = "_serif"; txtF1.size = "16";
txtF1.color = "0x0000BB";txtF1.italic = true;
txtF1.bold = true;txtF1.align = "left";

var txtFTief = new TextFormat();
txtFTief.font = "_serif"; txtFTief.size = "10";
txtFTief.color = "0x0000BB"; txtFTief.align = "right";
txtFTief.tief = true;

/* Das war z.B ein Versuch von mir !
var txtFTief1 = new TextFormat();
txtFTief1.font = "_serif"; txtFTief1.size = "10";
txtFTief1.color = "0x0000BB"; txtFTief1.align = "right";
txtFTief1.tief1 = true;*/


//Deklaration der Arrays für die nachfolgenden Texterstellungen!
var textInhalt = new Array();
var style = new Array();
var width = new Array();


//Methode, die durch die Erzeugung dynamischer Textfelder an der erwünschten
// Position mehrere Textformate in einer Texteinheit zulässt
MovieClip.prototype.genTextUnit =
function(instanzName, tiefe, startposX, startposY, textArray, styleArray, widthArray){

for(i= 0; i<textArray.length; i++){
startposX = startposX+widthArray[i];

if(styleArray[i].tief == true)
posY = startposY + 10;
else
posY = startposY;


tiefe = tiefe+1;
this.createTextField(instanzName+i, tiefe, startposX, posY, 0, 0);

with(this[instanzName+i]){
autoSize = true;
text = textArray[i];
type = "static";
selectable = false;
// Textformat anwenden
setTextFormat(styleArray[i]);
// Eingebettete Schriften verwenden
embedFonts = false;
}
}
}

// Genieriert Eingabefelder und Push- sowie CheckBox-Komponenten
function erzeugeFelderButtons(){
//Berechungsgleichung von periodischen Signalen
//Eingabe Text 1 2 3 4 5 6 7 8 9 10 11 12 13
textInhalt.push(" x","( )","t","=","A","1",".","cos(2\u03c0 )"," f ","1",".","t - \u03c6","1");

// 14 15 16 17 18 19 20 21 22 23
textInhalt.push("+","A","2",".","cos(2\u03c0 )"," f ","2",".","t - \u03c6","2");
//Eingabe Formate !
style.push(txtF1,txtF1,txtF1,txtF1,txtF1,txtFTief, txtF1,txtF1);
style.push(txtF1,txtFTief,txtF1,txtF1,txtFTief,txt F1,txtF1,txtFTief);
style.push(txtF1,txtF1, txtF1,txtFTief,txtF1,txtF1,txtFTief);
//Eingabe Startpixels
width.push(1,13,6,16,15,12,6,6,42,8,8,6,26);
width.push(16,13,12,6,6,42,8,8,6,26);
//Generierung der Texteinheit
genTextUnit("xGleichung",level,110,125,textInhalt, style,width);
level += textInhalt.length;

}
erzeugeFelderButtons();



Danke im Voraus für Eure Hilfe
slim007tn ist offline   Mit Zitat antworten
Alt 26-04-2006, 16:18   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
http://ericlin2.tripod.com/math2/eqDisplayert.html
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 26-04-2006, 17:50   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 27
Danke, aber...

Danke für Deinen Tipp, aber ich möchte die Formel schon mit Hilfe meiner ursprünglichen Funktion (getTextUnit) schreiben.
Gibt es niemanden hier, der mir helfen kann?
slim007tn ist offline   Mit Zitat antworten
Alt 26-04-2006, 18:28   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Ist doch nicht all zu schwer. Du musst halt nur festlegen wann dein unendlich erreicht ist und das hängt ja wiederrum von der Verwendung der Funktion ab. Die Aufsummierung ist ja kein Problem mit einer while-Schleife. Als Abbruchkriterium kannst du ja einen von dir und für den Anwendungszweck festgelegten Wert nehmen an dem deine Unendlichkeit erreicht ist. Die Berechnung der Fakultät sollte ja auch kein Problem darstellen und dafür kann man eine extra Funktion festlegen. Im Forum findest du bestimmt schon eine vorgefertigte Funktion obwohl so etwas auch schnell selbst gemacht ist. x^y kannst du mit der Funktion Math.pow() berechnen.
Nun viel Spass bei der Umsetzung...
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 26-04-2006, 18:35   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 27
@ Dakinel

Ich will die Funktion nicht berechnen sondern nur schreiben.
Das ist gar nicht so leicht! Probier es Mal, wenn Du kurz Zeit hast.
slim007tn ist offline   Mit Zitat antworten
Alt 26-04-2006, 18:44   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
...ach so du willst die Formel formatiert darstellen...

Das würde ich ganz anders angehen.
Ich würde Objekte erstellen für die Darstellung von verschiedenen Mathematischen Gebilden. Z.Bsp. ein Objekt für die Darstellung einer Wurzel welches die einzelnen darzustellenden Parameter in empfang nimmt. Das Objekt selbst errechnet dann erst die Darstellung anhand der gegebenen Parameter.
Wenn man nun für jedes denkbare Gebilde ein solches Objekt hat muss man nur noch eine Formatierung der Funktion festlegen um diese dann korrekt parsen zu können. Das ganze sollte sich auch nicht schwer umsetzen lassen...
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 26-04-2006, 20:29   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 27
?

Kann mir wirklich keiner helfen?
slim007tn ist offline   Mit Zitat antworten
Alt 26-04-2006, 21:59   #8 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Hinter dem Link in der ersten Antwort steckt auch die Quelldatei, wie du selbst sagst, ist das garnicht so leicht, warum also das Rad neu erfinden?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-04-2006, 08:25   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 27
aktueller Stand

Hallo noch Mal!

Ich habe mir natürlich die Quelldatei des obigen Links angeschaut. Ich weiss nicht, wie man damit Indizen ( wie z.B Xi, mit i als Indiz ) schreiben könnte oder Sigma(von Null bis unendlich).
Schaut Euch Mal an, was ich geschafft habe. Ich habe aber noch 2 Fehler bei Jn und Sigma, die ich noch nicht korrigieren konnte.
Vielleicht kann mir jemand einen Tipp geben.

Gruß und danke für Eure Antworten.


// Darstellung "Mathematischer Funktionen"

//Festlegung unterschiedlicher Textformate
var txtF1 = new TextFormat();
txtF1.font = "_serif"; txtF1.size = "16";
txtF1.color = "0x0000BB";txtF1.italic = true;
txtF1.bold = true;txtF1.align = "left";

var txtFTief = new TextFormat();
txtFTief.font = "_serif"; txtFTief.size = "10";
txtFTief.color = "0x0000BB"; txtFTief.align = "right";
txtFTief.tief = true;

var txtFTief1 = new TextFormat();
txtFTief1.font = "_serif"; txtFTief1.size = "10";
txtFTief1.color = "0x0000BB"; txtFTief1.align = "right";
txtFTief1.tief1 = true;


//Deklaration der Arrays für die nachfolgenden Texterstellungen!
var textInhalt = new Array();
var style = new Array();
var width = new Array();


//Methode, die durch die Erzeugung dynamischer Textfelder an der erwünschten
// Position mehrere Textformate in einer Texteinheit zulässt
MovieClip.prototype.genTextUnit =
function(instanzName, tiefe, startposX, startposY, textArray, styleArray, widthArray){

for(i= 0; i<textArray.length; i++){
startposX = startposX+widthArray[i];

if(styleArray[i].tief == true)
posY = startposY + 10;
else
posY = startposY;

if(styleArray[i].tief1 == true)
posY = startposY - 7;
else
posY = startposY;


tiefe = tiefe+1;
this.createTextField(instanzName+i, tiefe, startposX, posY, 0, 0);

with(this[instanzName+i]){
autoSize = true;
text = textArray[i];
type = "static";
selectable = false;
// Textformat anwenden
setTextFormat(styleArray[i]);
// Eingebettete Schriften verwenden
embedFonts = false;

posY = startposY;


}
}
}

// Genieriert Eingabefelder und Push- sowie CheckBox-Komponenten
function erzeugeFelderButtons(){
//Berechungsgleichung von periodischen Signalen
//Eingabe Text 1 2 3 4 5 6 7 8 9 10 11 12
13
textInhalt.push("J","n","( )","x","=","\u2211","k=0","\u221E","______________ __","(-1)","k",".","(x/2)");

// 14 15 16 17 18 19 20 21 22 23
textInhalt.push("n+2k","","","",""," ","","","","");
//Eingabe Formate
style.push(txtF1,txtFTief,txtF1,txtF1,txtF1,txtF1, txtFTief,txtFTief);
style.push(txtF1,txtF1,txtFTief1,txtF1,txtF1,txtFT ief1,txtF1,txtFTief);
style.push(txtF1,txtF1, txtF1,txtFTief,txtF1,txtF1,txtFTief);
//Eingabe Startpixels
// 1 2 3 4 5 6 7 8

width.push(1,6,6,7,16,8,4,10,20,8,22,10,13);
width.push(30,13,12,6,6,42,8,8,6,26);
//Generierung der Texteinheit
genTextUnit("xGleichung",level,110,125,textInhalt, style,width);
level += textInhalt.length;


//Berechnungsgleichung von linearen Verzerrungen
textInhalt = new Array(); style = new Array(); width = new Array();
textInhalt.push("k!",".","(n+k)!","","","",""," "," ","","","","");
textInhalt.push("","","",""," ","","","","","");
style.push(txtF1,txtF1,txtF1,txtF1,txtF1,txtF1,txt F1,txtF1,txtF1);
style.push(txtF1,txtF1red,txtF1red,txtFTiefred,txt F2red,txtF1red,txtFTiefred,txtFMultred);
style.push(txtF1red,txtFTiefred,txtF2red,txtF1red, txtF1red,txtFTiefred);
width.push(1,15,6,16,15,10,6,4,9,8,8,16,6);
width.push(14,13,10,6,4,9,8,8,16,6);
genTextUnit("yGleichung",level,220,145,textInhalt, style,width);
level += textInhalt.length +1;



}

erzeugeFelderButtons();
slim007tn ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele