Graph eines Polynoms zweiten Grades in Javascript zeichnen

Status
Nicht offen für weitere Antworten.

Alibistudent

Mitglied
Hallo alle zusammen ich habe eine Hausaufgabe in Programmierung aufbekommen. Ich habe mich erstmal hingesetzt und versucht bisschen was zu machen nur bekomm ich nicht wirklich was sinnvolles in meiner Zeichnung:rtfm:

Die Aufgabe lautet:
Den Graph eines Polynoms zweiten Grads zeichnen

Schreiben Sie ein Javascript-Programm, das die Eingabe der Koeffizienten a0, a1 und a2 für ein Polynom zweiten Grads in einem HTML-Formular erlaubt, d.h. für Funktionen der Form

y = a2*x^2 + a1*x + a0

und dann den Graph der Funktion für den Bereich zwischen x = -7 und x = 7 in ein Koordinatensystem zeichnet.


Was ich bisher gemacht habe:
Java:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Graph</title>
<script type="text/javascript">
	var cc;  // Variable für Canvas-Kontext
	
	function draw() {
		var myCanvasElem = document.getElementById("canvas");
		if (myCanvasElem.getContext) {
			cc = myCanvasElem.getContext("2d");
			var a0 = parseInt( document.forms['f1'].len1.value);
			var a1 = parseInt( document.forms['f1'].len2.value);
			var a2 = parseInt( document.forms['f1'].len3.value);
			var x1, y1, x2, y2;
			for(x1=-7;x1<=6;x1=x1+1){
				y1=x1*x1*a2+x1*a1+a0;
				x2=x1+1;
				y2=x2*x2*a2+x2*a1+a0;
				zeichneGraph(x1,x2,y1,y2);
			}
		}
	}
	
	function zeichneGraph(x1,x2,y1,y2) {
		cc.beginPath();
		cc.moveTo( x1, y1);
		cc.lineTo( x2, y2);
		cc.closePath();
		cc.stroke();
	}
	window.onload = draw;
</script>
</head>
<body>
<form id="f1" action="hello.html">
    <p>
      <label for="a0">a0: </label>
      <input type="text" id="a0" name="len1"/><br />
	  <label for="a1">a1: </label>
      <input type="text" id="a1" name="len2"/><br />
	  <label for="a2">a2: </label>
      <input type="text" id="a2" name="len3"/><br />
      <button type="button" onclick="draw()">Zeichne Graphen</button><br />
    </p>
</form> 
<canvas id="canvas" width="600" height="400">Bitte einen aktuellen Browser verwenden!</canvas>
</body>
</html>

mein Problem ist erstmal das etwas angezeigt wird aber ich weiß nicht ob es richtig ist bzw. ich weiß nicht wie ich es so umstellen muss das was sinnvolles dabei rauskommt. danke im voraus:toll:
 

muckelzwerg

Bekanntes Mitglied
Sieht doch auf den ersten Blick gar nicht schlecht aus. Hast Du ein konretes Problem? Stört Dich an der Ausgabe etwas?
Gibt es eine konkrete Frage?
Wie wäre es, wenn Du ein Bild anhängst, wie das Ergebnis aussieht?
 

Andi_CH

Top Contributor
Vielleicht ist in Javascript wirklich alles anders ???:L
Ist es wirklich nötig jedes einzelne Teilstück als kompletten Graphen mit begin - moveTo, lineTo und close zu zeichnen?

Der Rest sieht nicht all zu schlecht aus - warum das Resultat so seltsam dergestellt wird - keine Ahnung.
 

Andi_CH

Top Contributor
Nicht wirklich - ich sehe schon mal nur die Hälfte des Graphen - also x mit Offset nach rechts schieben bringe ich gerade noch hin, aber die y Axe (positiv ist ja nach unten) mal -1 - das bringe ich irgendwie nicht hin ;-)
Egal ob ich *-1 oder *(-1) hinschreibe, dann kommt einfach gar nichts mehr ;-)

Aber ist ja für mich auch nicht wirklich das Gebiet in dem ich mich bewege

EDIT:

Links das Original , rechts das, wenn ich in zeichneGraph zu jedem x 20 addiere
 

Anhänge

  • graph.png
    graph.png
    13,4 KB · Aufrufe: 49
Zuletzt bearbeitet:

muckelzwerg

Bekanntes Mitglied
Ja sicher, das Ding ist ziemlich "chaotisch" gezeichnet. Aber es funktioniert doch alles und sieht aus, wie man es aus dem Code ableitet.
Die HTML-Koordinaten fangen halt links bei 0 an. Wenn er -1 zeichnet, sieht man es ohne Verschiebung nicht.
Und wie so oft liegt der Ursprung links oben, als gehen die hohen y-werte nach unten.
Das korrigiert man mit "Max-y".
So Kinderkrankheiten muss er dann halt korrigieren. Mich nervt viel mehr, dass die Reihenfolge der Faktoren "verkehrtherum" ist und die Formel da nicht steht.

Aber alles in allem, sehe ich weder wirkliche Probleme, noch irgendwas seltsames, noch eine konkrete Frage und dementsprechend auch wenig Grund hier viel Zeit zu investieren. Da gibts andere Leute, mit anderen Problemen, denen man besser helfen kann, oder nicht?
 

Andi_CH

Top Contributor
Mich fasziniert einfach wie wenig Zeilen es braucht bis eine Grafik da steht - Faktoren unter dem Aufwand den man in Java treiben müsste.

Aber dass man nicht mit -1 multiplizieren kann ist schon eigenartig.

Was mich nervt ist die blinde Programmiererei - eintippen - klicken - vielleicht kommt was, vielleicht auch nicht - tja :)

So, zurück an die Arbeit - ist gerade wieder mal ein Test fertig geworden.
 

muckelzwerg

Bekanntes Mitglied
Naja, der Code steht ja schon "automatisch" in der paintComponent-Methode.
Wenn Du in Java dort ansetzt, kommt das Gleiche raus.
Wenn Dir sowas gefällt, sei kein Frosch und schau Dir mal Flash an. Auch wenn es unter Informatikern extrem verschrieen ist, kann man
mit ein bisschen Actionscript (ganz ohne "Hinmalen") tolles Rapid-Prototyping machen.
Allein ein simpler "Tween" ist etwas, wo man bei Java2D erst in die Tischkante beißt und dann nach einem "Framework" sucht.

Die Invertierung mit "*-1" funktioniert schon, aber dann musst Du den Graphen nachträglich runterschrieben, sonst spiegelst Du ihn oben aus dem Browser raus. ;)

Ich meinte auch gar nicht unbedingt "zurück an die Arbeit" (wobei das auch gut ist ^^), sondern andere Themen hier. Ich finds sehr schade, wenn irgendwelche Nervbacken die ganze Aufmerksamkeit bekommen oder man rätselt, was denn die Frage sein könnte und Leute mit guten Fragen und anständiger Auseinandersetzung nur Schulterzucken ernten. Da lässt man sich viel zu schnell reizen.
 

Andi_CH

Top Contributor
Alibi-Student - Chiller-Student - ich muss mir auch mal etwas kreatives einfallen lassen :)

mit Arbeit meine ich mich - der nächste Test ist am Laufen.
 

Alibistudent

Mitglied
javascript ist sinnlos ich weiß :lol:
aber ich muss da durch:rtfm: und ich hoffe ihr könnt mir helfen:)
hab jetzt mal bisschen weiter gearbeitet (obwohl man das von einem alibistudenten nicht erwartet:D) und festgestellt das mein nullpunkt links oben ist und ich das ganze je nach dem wie groß ich mein canvas fenster gewählt habe meinen nullpunkt verschieben muss...dazu habe ich ein koordinatensystem angelegt:D sieht noch bisschen billig aus aber reicht ja erstmal^^ dann habe ich meine berechnung geändert und meine kurve gespiegelt...voila

Java:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Graph</title>
<script type="text/javascript">
	var cc;  // Variable für Canvas-Kontext
	
	function draw() {
		var myCanvasElem = document.getElementById("canvas");
		if (myCanvasElem.getContext) {
			cc = myCanvasElem.getContext("2d");
			var a0 = parseInt( document.forms['f1'].len1.value);
			var a1 = parseInt( document.forms['f1'].len2.value);
			var a2 = parseInt( document.forms['f1'].len3.value);
			var x1, y1, x2, y2;
			x1=350;
			y1=0;
			x2=350;
			y2=700;
			zeichneGraph(x1,x2,y1,y2);
			x1=0;
			y1=350;
			x2=700;
			y2=350;
			zeichneGraph(x1,x2,y1,y2);
			
			for(x=-7;x<=6;x++){
                y1=350-(x*x*a2+x*a1+a0);
                y2=350-((x+1)*(x+1)*a2+(x+1)*a1+a0);
				x1=(x+7)*50;
				x2=(x+8)*50;
                zeichneGraph(x1,x2,y1,y2);
			}
		}
	}
	
	function zeichneGraph(x1,x2,y1,y2) {
		cc.beginPath();
		cc.moveTo( x1, y1);
		cc.lineTo( x2, y2);
		cc.closePath();
		cc.stroke();
	}
	window.onload = draw;
</script>
</head>
<body>
<form id="f1" action="hello.html">
    <p>
      <label for="a0">a0: </label>
      <input type="text" id="a0" name="len1"/><br />
	  <label for="a1">a1: </label>
      <input type="text" id="a1" name="len2"/><br />
	  <label for="a2">a2: </label>
      <input type="text" id="a2" name="len3"/><br />
      <button type="button" onclick="draw()">Zeichne Graphen</button><br />
    </p>
</form> 
<canvas id="canvas" width="700" height="700">Bitte einen aktuellen Browser verwenden!</canvas>
</body>
</html>

sieht jetzt ganz ordentlich aus was mich noch stört ist das mein y-wert doch eigtl gar nicht an meinen 50 fachen x-wert angepasst ist oder irre ich mich? wenn ich meinen y-wert mit 50 multipliziere sieht das ganze wieder ******e aus:rtfm: kann man das ganze so stehen lassen und ist die kurve falsch?
 

muckelzwerg

Bekanntes Mitglied
Du musst jetzt langsam mal lernen, sinnvolle und konkrete Fragen zu stellen.
Einfach irgendwelchen Code zu posten und wild drumrumreden verschwendet jede Menge Zeit.
Deine Frage "kann man das so stehenlassen?" ist doch komplett sinnlos. Natürlich kannst Du das stehenlassen. Du kannst auch noch irgendwas ganz anderes machen, oder gleich was anderes studieren, oder einfach ins Kino gehen ...

Also was genau willst Du uns sagen oder was genau ist Dein Problem?
 

Alibistudent

Mitglied
Aber alles in allem, sehe ich weder wirkliche Probleme, noch irgendwas seltsames, noch eine konkrete Frage und dementsprechend auch wenig Grund hier viel Zeit zu investieren. Da gibts andere Leute, mit anderen Problemen, denen man besser helfen kann, oder nicht?

sorry hab keine konkrete frage gestellt weil mich das verwirrt hat das links einfach ein strich angezeigt wird???:L ich wusste nicht was ich dazu fragen soll dachte erstmal mein programm macht nicht was es soll...
und warum sollte man mir nicht helfen es gibt auch genauso viele leute die weder eine konkrete frage stellen noch sich hinsetzen und mal was selber machen:pueh: ich hab mich hingesetzt und hab ja "eigtl" was ordentliches programmiert aber es ist schwer wenn der stoff noch neu ist wirklich konkrete fragen zu stellen...ich wollte nicht sowas schreiben wie ich versteh nichts:lol: das wäre ja gelogen:) aber wenn die aufgaben immer schwerer werden ist es schwer den überblick in den quellcodes zu behalten:bahnhof:
naja egal bin euch dankbar wenn ihr mir bei der bewältigung dieser aufgabe helfen könnt:autsch:
danke im voraus:toll:
 

Andi_CH

Top Contributor
Dann überleg dir mal warum das so dargestellt wird - bis auf einen Effekt dass ich den Graphen aus dem Browser herausgespiegelt habe, habe ja sogar ich das hinbekommen (und das will was heissen :D ) und da kam sehr schnell die helfende Antwort :)

By the way - ist es möglich die aktuelle Grösse der Zeichenfläche herauszufinden - z.B. um die Grafik in die Mitte zu zeichnen?
 

Alibistudent

Mitglied
Du musst jetzt langsam mal lernen, sinnvolle und konkrete Fragen zu stellen.
Einfach irgendwelchen Code zu posten und wild drumrumreden verschwendet jede Menge Zeit.
Deine Frage "kann man das so stehenlassen?" ist doch komplett sinnlos. Natürlich kannst Du das stehenlassen. Du kannst auch noch irgendwas ganz anderes machen, oder gleich was anderes studieren, oder einfach ins Kino gehen ...

Also was genau willst Du uns sagen oder was genau ist Dein Problem?
ich muss informatik machen ok mittlerweile macht es mir auch spaß aber ich werd mehr oder weniger dazu gezwungen ich weiß nicht was es mit meinem studium hat ich studier ja nicht informatik. wenn du mir nicht helfen willst brauchst du es auch nicht. aber hör auf die mich die ganze zeit zu verarschen. ich hab gefragt ob man das so stehen lassen kann weil wir eine hausaufgabe aufbekommen haben und die bis nächste woche abgeben müssen damit wir unsere punkte kriegen aber ich weiß nicht ob ich dafür schon einen punkt kriege oder es als falsch gewertet wird. ich würds so stehen lassen weil ich das prinzip dieser aufgabe verstanden hab...nur nervt mich das die kurve so breit ist aber das ist ja jetzt auch egal. Warum wird meine Kurve so breit dargestellt?
 

Andi_CH

Top Contributor
Das hat nicht das Geringste mit Informatik oder Java zu tun, sondern mit Mathematik, Kapitel Funktionsdiskussionen!
Wenn du es noch nicht bemerkt hast, dann halt im Klartext: Signalisiere doch einfach einmal, dass du deine graue Masse genannt Gehirn angestrengt hast und zu welchen Schlüssen du gekommen bist.
Dann sagen wir dir ob die stimmen oder nicht und wenn wir es wissen auch wieso die nicht stimmen - aber deine Aufgaben lösen wir dir sicher nicht!
(Sollte es doch jemand tun hat er dir damit nicht im Geringsten geholfen!)
 

muckelzwerg

Bekanntes Mitglied
Alibistudent, ich HABE zweimal Info studiert und werde vielleicht auch bald darin unterrichten.
Ich habe selbst so einige Forenbeiträge in meiner Studienzeit verfasst, einige Aufgaben gelöst und anderen bei Aufgaben geholfen.
Die harte Wahrheit ist, dass Du Dich am unteren Rand des Spektrums bewegst.
Damit stehen Deine Chancen, das Studium erfolgreich durchzuziehen, nicht besonders gut.

Und da geht es in erster Linie noch gar nicht um Inhalte, sondern darum, wie Du an die Aufgaben rangehst.
Schau Dir nur mal Deine letzten Sätze an. Groß- und Kleinschreibung, Satzzeichen, Absätze ... das ist schon sehr anstrengend zu lesen.
Nur ein einziger Syntaxfehler in Deinen Programmen und sie laufen nicht. Du musst keine perfekte Rechtschreibung haben, aber die Fähigkeit sich strukturiert, verständlich und formal akzeptabel auszudrücken ist sehr wichtig.

Deine Beschreibungen sind ziemlich schlecht strukturiert. "Ich habe eine Hausaufgabe, kann ich das so stehenlassen?" ist als Frage völlig witzlos.
Beschreibe kurz und möglichst präzise, was Du allgemein erreichen willst. Beschreibe dann den aktuellen Stand und konkrete Einzelschritte, die Du als nächstes schaffen möchtest.
Ein allgemeines "ey, guckt euch mal meine Aufgabe an" bringt gar nichts.

Desweiteren gehst Du fast gar nicht auf Rückfragen oder Hilfestellungen ein. Du knallst irgendwas ins Forum, bekommst eine Reaktion und ein paar Stunden/Tage später kommst Du mit etwas Neuem.
Im ersten Beitrag hier hast Du "danke im Voraus" geschrieben, anstelle einer konkreten Frage.
Nach fast zehn Beiträgen komsmt Du wieder, ignorierst alles Bisherige und fängst mit "ich hab mal weitergemacht" wieder an.
Das wird so nichts.
Wir sind nicht Deine Arbeitsgruppe oder Deine Kommilitonen, die sich in der Übung oder Mensa treffen und ihre Aufgaben vergleichen.
Wir haben Deine Hausaufgaben nicht und wir machen sie auch nicht. Wir wissen auch nicht, ob und wofür Du Punkte abgezogen bekommst.
Und die Haltung, als wüssten wir, was genau es am Ende sein soll,
als gäbe es nur eine Lösung,
als wäre es völlig klar, wie diese auszusehen hat und
als wäre es eindeutig, wie ein Programm verändert werden sollte ohne
dass man eine konkrete Frage oder auch nur Richtung hat,
ist sehr nachteilig für Dich.



Und dann noch eines. Einen Dreck wirst Du gezwungen Informatik zu machen. Du studierst staatlich? Dann mach Dich mal schlau, wieviel Steuergeld Deine Ausbildung kostet.
WIR zahlen Dir die Scheisse. Also setz Dich auf Deine vier Buchstaben und streng Dich an, oder steig aus, wenn es das Falsche ist.
Bei SOWAS könnte ich wirklich kotzen.
 

Jo.Mo.

Aktives Mitglied
@Alibistudent: Ich muss den anderen beipflichten, etwas KONKRETE Fragestellungen helfen ungemein. In deinem Falle, nach Ausführung des Programms, hiesse das wohl: WARUM werden fast nur LINIEN gezeichnet, ich will KURVEN sehen. MUSS DA IRGENDWAS BEIM ZEICHNEN SKALIERT WERDEN...?

Das was Andi_CH sagte, mit den x20 bei der Zeichenfunktion, geht schon in die Richtung, aber ich denke (das wäre dann auch meine Frage) das müsste doch etwas "geschmeidiger" gehen...? @All?

@Muckelzwerg: Beruhige dich mal, auch wenn der Herr Alibistudent ob seines Nicks,seiner Begründungen und des genrerellen Veraltens (keine Rückmeldungen, kein eingehen auf konkrete Hinweise etc. pp. -da gebe ich dir vollkommen Recht) kein leuchtendes Beispiel für einen Studenten ist, mir geht es da ähnlich - das Problem ist schlicht, dass man Info als Pflichtfach in vielen Studiengängen anbietet (was in gew. Weise auh absolut nachvollziehbar und gewünscht ist), leider sind die Anforderungen völlig unterschiedlich und auch die zur Verfügung gestellten Materialien nicht immer ausreichend. Auch wechseln an manchen Unis ständig die Programmiersprachen, was es nicht einfacher macht, auch wenn sich manche ähneln. So habe ich von JavaScript, über Java, C, C++ und Pascal schon diverse Sprachen kommen und gehen sehen. Und wenn im Einführungskurs Informatik tw. Sachen verlangt werden, die mit den Unterrichtsmaterialien alleine nicht zu bewältigen sind, kaum Zeit bleibt, man nichts kopieren sollte (Bücher können aufgrund gg. Vorlagen schnell dazu verleiten) und selbst herangezogene Informaik-Studenten mit der der Aufgabenstellung gefordert sind, ist es naheliegend, dass der ein oder andere um Hilfe ruft.

Dass es Leute gibt, die für solcherlei Probleme nur ein müdes Lächeln übrig haben, ist klar, aber da sollte man dann auf das eingangs erwähnte Problem eingehen: FALLS eine konkrete Fragestellung kommt, diese (falls sie einen selbst nicht allzu sehr herausfordert) beantworten, und schon ist das Problem geschichte. Das ist m. E. auch der Sinn eines Forums. Ich kenne das aus anderen Bereichen, auch ich spiele nicht den Helfer für alles, aber wenn man sieht das schon etwas getan wurde und die Hilfe zum Feintuning des Programms dient, sehe ich da kein Hindernis.

Lange Rede, kurzer Sinn. Meine Frage zum Programm steht ja oben, vielleicht weiss jemand Rat, ich denke das ist auch das Problem von Alibistudent (man hat selten ein konkr. Polynom zur hand um zu prüfen, ob die Kurve korrekt gezeichnet wird...)
 

muckelzwerg

Bekanntes Mitglied
Jo.Mo, das ist genau der Punkt. Ich "musste" auch die konjugiert komplexe Reaktion eines Dipols auf ... ausrechnen um E-Technik zu bestehen. Ein einziger Kurs im ganzen Studium, der geschätzt die Hälfte aller Abbrecher produziert hat.
Da habe ich auch an der Sinnhaftigkeit gezweifelt und tue es immernoch.
Aber meinst Du da habe ich mit solchem Einsatz wie von Alibistudent hier, irgendwas erreicht?

Es geht überhaupt nicht um die Notwendigkeit seiner Kurse oder sonst irgendwelche Themen. Das muss er gefälligst mit sich selbst aushandeln. WIR zwingen ihn ganz gewiss nicht zu einem Studium oder solchen Kursen.
Von mir aus kann er sich morgen exmatrikulieren.
ER fragt hier und ER hat Anliegen, also muss ER sich auch darum kümmern.

Du hast gesagt "wenn man sieht, dass schon etwas getan wurde". Schau Dir mal seine Beiträge (und die der anderen Accounts, die ihm auch gehören) an. Da hat sich so ziemlich gar nichts getan. Falls er auch der "Chillerstudent" ist, schau Dir mal seine "Herangehensweise" beim Lösen der Rekurrenzgleichung an.
So wird das einfach nichts.
 

Andi_CH

Top Contributor
... und ich habe nach el Ing Studium und zwei Nachdiplomstudiengängen den Master ...

Funktionsdiskussionen waren Thema der ersten zwei Semester des FH (damals noch HTL) Studiums.
Verschieben und umskalieren von Graphen war ein "Abfallprodukt" davon.

Also passt dein Thema im doppelten Sinne nicht hierhin.

Javascript kennen zwar hier einige, aber es nicht das Thema des Forums.
Mathematische Aufgaben werden zwar ab und zu im Mathe-Teil des Forums diskutiert, aber das du auf dem Niveau eine Antwort bekommst ohne selbst massiv aktiver zu werden bezweifle ich.

Ich habe es auch erlebt was es heisst im Studium etwas verpasst zu haben. Das heisst Nach(t)arbeit. Ein Studium ist kein 40 Stunden Job - so 60 - 80 Stunden pro Woche waren das immer und während den Nachdiplomstudiengängen, die berufsbegleitend sind, war die Belastung so 70 - 90 Stunden pro Woche.
Also mach was und dann gelingt es dir auch.

Ich stelle jetzt noch einmal die Infos zusammen und versuche die Ironie zu unterdrücken:

- Feststellung: Die 0 / 0 Koordinate ist links oben x nach recht positiv y nach unten negativ du willst aber 0 / 0 in der Mitte der Fläche haben.

- Mit window.outerHeight und -width findest du heraus wie gross deine Zeichenfläche ist (es gibt vielleicht noch passenderes - selfhtml hilft da weiter!)

- Du verschiebst nun jeden berechneten Punkt um die halbe Width nacht rechts (einfach + rechnen) und um die halbe Height nach unten (das ist tatsächlich ein -)

- Wenn der Bereich von -7 - +7 (sowas ist es glaub) viel zu Nahe zusammen ist heisst es den Bereich zu strecken, was einem * entspricht (Das kann bei Bedarf auch in der Höhe angewandt werden. (Überleg vorher ob du erst * und dann + bzw - rechnen musst oder umgekehrt.)

Mehr Hilfe gibt es von mir nicht.
 

Jo.Mo.

Aktives Mitglied
@muckelzwerg:Klar, da hast du schon Recht.

Da ich mich mom. selbst mit JS auseinandersetze (muss) wäre aber meine Frage noch im Raum - ohne auf den Threadersteller einzugehen - ob, so wäre jetzt meine Überlegung, ob man nicht ein (idealerweise rechteckiges) Fenster mit KOS vordefinieren könnte um bei Start der Berechnung läuft der Graph durch und zeichnet die Funktion. Ich hatte das mal irgendwo gesehen, finde es aber nicht mehr (daher bin ich mir auch nicht sicher, ob das geht, bzw. ob es JS war), wäre schön wenn mir einer so einen link etc. schicken könnte (oder zur Not per PM verraten) wie das geht.

mfg
 

muckelzwerg

Bekanntes Mitglied
Andi, evtl. hast Du bei den Achsen was vertauscht. Ich bin aber nicht sicher, von welchen Beispiel (gespiegelt oder nicht etc.) Du gerade ausgehst.
Hier gibts z.B. ein kleines Beispiel zum Koordinatenklicken
Click image and get coordinates with Javascript - Emanuele Feronato

Jo.Mo, ich bin auch kein Javascript-Experte. Was meinst Du mit KOS?
Es ist grundsätzlich erstmal eine Überlegung wert, wie das ganze später mal aussehen soll.
Wenn man eine Fensterbreite und einen "Funktionsauschnitt" (quasi den "Zoom") hat, dann kann man sich bei einem Pixelbild überlegen, wieviele Punkte überhaupt gezeichnet werden können.
Das ist die Breite des Zeichenbereichs in Pixeln. Jetzt kannst Du die "Breite" der Funktion (also den Ausschnitt) auf die Anzahl der Pixel abbilden.
Du hast eine "feste" horizontale Auflösung. Daraus kannst Du jeden Punkt in den Bereich der Funktion interpolieren und den zugehörigen Funktionswert ausrechnen.
Damit hättest Du sichergestellt, dass bei z.B. 800 Pixeln Bildbreite auch genau 800 Punkte gezeichnet werden.
Ist es das, was Du meintest?
 

Jo.Mo.

Aktives Mitglied
Mit KOS meinte ich das Koordinatensystem.

Ansonsten war es das, was ich meinte, ich wollte gar nicht so genau auf eine genaue Grösse hinaus, mehr auf eine vernünftige Fenstergrösse, dass die Funktion auch entsprechend "erkennbar" ist. Bei der vom Threadersteller geposteten Funktion wird ja mehr ein Strich gezeichnet, ich denke das komm auch daher dass das Verhältnis nicht stimmt.

Und das wär dann auch schon meine Frage, Andi meinte ja, einfach die Werte um einen Faktor zu erhöhen, ich weiss nicht ob es die einzige Möglichkeit ist, den graph anschaulich darzustellen.

Ansonsten meinte ich, dass der Graph dann quasi in "Echtzeit" gezeichnet wird - dass ist zwar nur ein Gimmick, hatte es aber mal irgendwo gesehen (weiss leider nicht mehr wo es war) war aber ganz spassig und wäre interessant, wie sich das umsetzen lässt... :)
 

Alibistudent

Mitglied
Ich versteh gar nicht woher du deine Argumente nimmst du kennst mich gar nicht. Ich verlange von keinem das er mir hilft. Ihr habt anfangs was zu der Lösung meiner Aufgabe beigetragen - dachtet ihr! Als ich geguckt hab was hier geschrieben wurde war ich schon fast fertig mit der Aufgabe weil ich mich hingesetzt hab und meinen Stoff durchgegangen bin. Und anstatt zu schwafeln und spamen hättest du mir bei der Bewältigung dieser Aufgabe helfen können. Du hast mir kein bisschen geholfen und das finde ich schade. Wenn man schon soviel Freizeit hat und in Foren leuten helfen kann sollte man das auch sinnvoll tun ansonsten solltest du dir einen Job suchen weil Hartz 4 wird auch von Steuern gezahlt. Ich bin fast fertig mit meinem Studium bin gerade im 6ten Semester und belege dieses Fach zum dritten mal weil jedes Jahr eine neue Programmiersprache verwendet wird. Das Fach heißt Einführung in die Programmierung und die Professorin sagt in der ersten Vorlesung: "Wer noch nie programmiert hat brauch sich keine Sorgen zu machen die Aufgaben sind nicht schwer wir werden nur einen kleinen Einblick in die Informatik haben". Wir müssen jede Woche Hausaufgaben abgeben - ok mir fällt es nicht schwer weil das das dritte mal ist das ich es mache - aber als ich das Fach das erste mal belegt hab war alles noch so neu für uns und Informatik ist nicht das einzige Fach das ich belegt habe. Zeitlich sind die Aufgaben für einen Neuling nicht zu schaffen vor allem weil die Aufgaben von Woche zu Woche schwerer werden aber auch weil man immer bis zu einem Punkt im programmieren kommt wo man nicht mehr weiter weiß weil man einfach nicht versteht was für ein Problem Javascript mit einem hat. Und man sucht und sucht und versucht den Fehler zu finden weil das Programm nicht machen soll was es soll und am Ende fehlt nur ein Semikolon oder eine eckige Klammer. Deswegen schreib ich in dieses Forum ich bin nicht wirklich so stark auf eure Hilfe angewiesen aber es ist immer gut wenn man eure Gedanken sieht und einem vielleicht ein Licht aufgeht das einem wieder weiterbringt. Ich danke denen die mir wirklich Helfen wollen sehr:toll: Ich werd mich bemühen meine Ausdrucksweise zu verbessern und meine Fragen zu konkretisieren. Bei dem ganzen Kaffeklatsch habe ich meine Aufgabe fertiggestellt. Damit alles schöner aussieht würde ich gerne Zahlen an den Skalenstrichen einfügen für die y-Achse von -40 bis 40 und für die x-Achse von -7 bis 7. Wie könnte man das bewerkstelligen? Gibt es in Canvas überhaupt die Möglichkeit dazu?

Java:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Graph</title>
<script type="text/javascript">
	var cc;  // Variable für Canvas-Kontext
	
	function draw() {
		var myCanvasElem = document.getElementById("canvas");
		if (myCanvasElem.getContext) {
			cc = myCanvasElem.getContext("2d");
			var a0 = parseInt( document.forms['f1'].len1.value);
			var a1 = parseInt( document.forms['f1'].len2.value);
			var a2 = parseInt( document.forms['f1'].len3.value);
			var x1, y1, x2, y2;
			//Koordinatensystem
			x1=350;
			y1=0;
			x2=350;
			y2=700;
			zeichneGraph(x1,x2,y1,y2);
			x1=0;
			y1=350;
			x2=700;
			y2=350;
			zeichneGraph(x1,x2,y1,y2);
			
			//Scala y-Achse -40 bis 40
			x1=340;
			y1=350-10*350/49;
			x2=360;
			y2=350-10*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350-20*350/49;
			x2=360;
			y2=350-20*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350-30*350/49;
			x2=360;
			y2=350-30*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350-40*350/49;
			x2=360;
			y2=350-40*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350+10*350/49;
			x2=360;
			y2=350+10*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350+20*350/49;
			x2=360;
			y2=350+20*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350+30*350/49;
			x2=360;
			y2=350+30*350/49;
			zeichneGraph(x1,x2,y1,y2);
			x1=340;
			y1=350+40*350/49;
			x2=360;
			y2=350+40*350/49;
			zeichneGraph(x1,x2,y1,y2);
			
			//Scala x-Achse -7 bis 7
			x1=0;
			y1=340;
			x2=0;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=50;
			y1=340;
			x2=50;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=100;
			y1=340;
			x2=100;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=150;
			y1=340;
			x2=150;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=200;
			y1=340;
			x2=200;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=250;
			y1=340;
			x2=250;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=300;
			y1=340;
			x2=300;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=400;
			y1=340;
			x2=400;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=450;
			y1=340;
			x2=450;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=500;
			y1=340;
			x2=500;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=550;
			y1=340;
			x2=550;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=600;
			y1=340;
			x2=600;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=650;
			y1=340;
			x2=650;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			x1=700;
			y1=340;
			x2=700;
			y2=360;
			zeichneGraph(x1,x2,y1,y2);
			
			
			for(x=-7;x<=7;x=x+0.1){
                y1=350-(350/49)*(x*x*a2+x*a1+a0);
                y2=350-(350/49)*((x+0.1)*(x+0.1)*a2+(x+0.1)*a1+a0);
				x1=(x+7)*50;
				x2=(x+7.1)*50;
                zeichneGraph(x1,x2,y1,y2);
			}
		}
	}
	
	function zeichneGraph(x1,x2,y1,y2) {
		cc.beginPath();
		cc.moveTo( x1, y1);
		cc.lineTo( x2, y2);
		cc.closePath();
		cc.stroke();
	}
	window.onload = draw;
</script>
</head>
<body>
<form id="f1" action="hello.html">
    <p>
      <label for="a0">a0: </label>
      <input type="text" id="a0" name="len1"/><br />
	  <label for="a1">a1: </label>
      <input type="text" id="a1" name="len2"/><br />
	  <label for="a2">a2: </label>
      <input type="text" id="a2" name="len3"/><br />
      <button type="button" onclick="draw()">Zeichne Graphen</button><br />
    </p>
</form> 
<canvas id="canvas" width="700" height="700">Bitte einen aktuellen Browser verwenden!</canvas>
</body>
</html>
 
Zuletzt bearbeitet:

Jango

Gesperrter Benutzer
@Alibistudent: Ich muss den anderen beipflichten, etwas KONKRETE Fragestellungen helfen ungemein. In deinem Falle, nach Ausführung des Programms, hiesse das wohl: WARUM werden fast nur LINIEN gezeichnet, ich will KURVEN sehen. MUSS DA IRGENDWAS BEIM ZEICHNEN SKALIERT WERDEN...?

Bei mir in der Nähe gibt es ein Etablissement namens 'Arabella'. Da werden ne Menge Kurven gezeigt - Linien sind dort nicht erwünscht. :D

Abgesehen davon - wieso bist du Dir so sicher, dass man schreien muss (permanente Großschreibung), um sich Gehör zu verschaffen? Das geht meist nach hinten los - wer schreit, hat unrecht...

@ Alibistudent: Selbst wenn du das mit der Programmierung hinbekommst - in Deutsch fällst du auf alle Fälle durch. Also verschwende keine Steuergelder (zitiert von Muckelzwerg) und mach anderen Platz.
Hartz 4 wird übrigens aus EU-Geldern bezahlt - glaub ich zumindest...
 
Zuletzt bearbeitet:

Jo.Mo.

Aktives Mitglied
...das eine permanente Grossschreibung "schreien" bedeutet, ist mir neu. [IRONIE]Muss wahrscheinlich in der Grossen International Forenstilfibel stehen...[/IRONIE] Üblicherweise geht damit meist auch der Imperativ einher, ich habe aber nicht umsonst den Satz mit einem Fragezeichen abgeschlossen. Grund der Formwahl war schlicht und ergreifend die Hervorhebung einer möglichen Frage zum Sachverhalt. Damit wärst du also in Deutsch auch durchgefallen... :bae:

EDIT: Ich wurde mittlerweise auf die Interpretation der Grosschreibung hingewiesen, wusste ich wirklich nicht.

Dennoch: Es sollte aus meinem Thread deutlich geworden sein, dass das nicht meine Worte sind, sondern mehr die vermutliche Fragestellung seitens Threadersteller sein könnte - die Grossschreibung wurde (statt farblicher Kennzeichnung) aufgrund meines Unwissens des o.g. Sachverhaltes wegen gewählt.
 
Zuletzt bearbeitet:

Jango

Gesperrter Benutzer
Üblicherweise geht damit meist auch der Imperativ einher...

Den Imperativ bezeichnet man allgemein auch als einen Befehl.

Damit wärst du also in Deutsch auch durchgefallen... :bae:

Dann wäre ich jetzt keine Deutschlehrerin und hätte mein Studium vergeigt...;)

EDIT: Ich wurde mittlerweise auf die Interpretation der Grosschreibung hingewiesen, wusste ich wirklich nicht.

Nichts zu Wissen ist keine Schande. Mit diesem Nichtwissen aber regelmäßig in Foren zugegen sein um zu labern schon... (Gross wird mit einem 'ß' geschrieben).

Dennoch: Es sollte aus meinem Thread deutlich geworden sein, dass das nicht meine Worte sind, sondern mehr die vermutliche Fragestellung seitens Threadersteller sein könnte

Dumm labern - Fehler machen und alles auf andere schieben... Dazu hab ich nichts mehr zu sagen.
 
S

SlaterB

Gast
mit Rechtschreibdiskussion ist ein Anlass gefunden das Thema zu schließen,
weiteres darf über PM ausgetauscht werden, ist sicher kein öffentliches Interesse,
oder meinetwegen Plauderecke

zum Thema ist spätestens seit 28.5. nichts mehr gesagt, wer ernsthafte Wiedereröffnungswünsche hat möge sich melden
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben