# Pixel zeichnen



## Heiland (14. Dez 2004)

Hätte da mal ne Frage!

Wie kann ich einen einfachen Punkt zeichnen mit der Graphics Klasse? g.fillPolygon will er bei mir nicht!


----------



## dotlens (14. Dez 2004)

zeichne eine 1 pixel lange linie. punkt zeichnen gibts nicht. 
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html


----------



## Heiland (14. Dez 2004)

danke! hat recht...

ich soll ein programm schreiben, wo man eine funktion eingibt (zb: f(x)=x^2) und dann wird in ein koordinatensystem der graph dazu gezeichnet! ich weiß aber nicht wie das geht! kann mir da einer einen tip geben?


----------



## DocMcFly (14. Dez 2004)

Das schwerste ist erst mal die Funktion auseinander zu pflücken.  - ich weiß nicht ob es da einen mathematischen Parser gibt unter Java. Aber mach Dich darüber mal schlau. - Wenn nicht mußt Du wohl oder übel selber parsen. 

Für den Anfang (2-Dimensional) würde ich nur die Eingabe auf den rechten Teil Deiner Formel beschrängen.

Dann jede RechenOP in eine Classe schieben und schauen was raus kommt.... so wäre mein Grobkonzept ;-)

Wenn Du es einfach und mit einem Hauch profi- machen möchtest... lege Dir nen Gramatik zu.

zB:

[Block]  = [variable]+[Block]  oder [Block] oder ([Block]) oder [Block]+[Variable]
[Variable] = x oder [Zahl]
[Zahl] = 1 oder 2 oder 3 oder .... oder 0


Clemens


----------



## 0xdeadbeef (14. Dez 2004)

Einen Parser zu schreiben ist nicht uninteressant und auch gar nicht so schwer, wenn man die Syntax beschränkt. Solange man auf rechtsassoziative Operatoren, Kurzschlußoperatoren und dergleichen verzichtet, kommt man mit relativ wenig Aufwand aus.
Allerdings muß man sich überlegen, wie man Prioritäten der Operatoren (im einfachsten Fall: Punkt vor Strich) und Klammerungen berücksichtigt.
Aus eigener Erfahrung kann ich sagen, daß es dafür zwei geeignete Verfahren gibt:
1) Ausdrücke, die noch nicht berechnet werden können/dürfen, auf einen Stack pushen und dann "poppen"  /ausrechnen, wenn das von der Bearbeitungsreihenfolge hinkommt.
2) Die Ausdrücke gemäß Klammern/Prios in eine umgekehrt polnische Notation umsortieren, dann kann man den Ausdruck ohne Probleme ausrechnen. Man braucht dann lediglich noch einen Valuestack, auf den man Werte legt. Ist allerdings für einen einfachen Ausdruckparser IMHO etwas aufwendiger als Methode 1.

In Java gibt es theoretisch noch die Möglichkeit, den Ausdruck in eine Klasse zu schreiben und extern zu kompilieren.  Selbstmodifizierender Code quasi. Derlei Methoden hat man zu C64-Zeiten angewendet in Basic, schön war das aber auch da schon nicht 

Es gibt aber in der Tat mehrere freie in Java geschrieben Ausdrucksparser. U.a. JEP (http://www.singularsys.com/jep/). Hier gibt's auch einen sehr einfachen Parser: http://www.heinerkuecker.de/Expression.html.

Echte Männer schreiben ihre Parser aber selber


----------



## Wildcard (14. Dez 2004)

Oxdeadbeef hat gesagt.:
			
		

> Echte Männer schreiben ihre Parser aber selber


na dann bist du ja genau der richtige  :wink: :
http://www.java-forum.org/de/viewtopic.php?t=11574
Jlex hat ja noch gepasst.
Hab dann versucht mit CUP weiter zu machen, aber das ist nicht mal so trivial.
Ich brauche von einem String, der einen (möglicherweise noch nicht kompletten)
xpath Ausdruck darstellt, den abstrakten Syntaxbaum. Will dann prüfen ob er korrekt ist,
und Eclipse-Like eine Autovervollständigung anbieten.


----------



## DocMcFly (15. Dez 2004)

Gibt es da nicht den "JavaCompiler"-Compiler (<-- nicht verschrieben) . da müsste auch ein scanner & Parser drin sein. Man muß dann nur die Grammatik definieren. 

Den Rest erzeugt das Teil fast von selbst... 

Gruß Clemens


----------

