# Punkte, Koordinanten, Geraden zeichnen lassen



## Zwergal (4. Dez 2007)

hi..

mittlerweile bin ich wirklich am verzweifeln....ich habe 4 punkte wo einerseits zwei strecken gebildet werden und kontrlliert wird ob diese aufeinander normal stehen (der teil funktioniert scon mal) und andrerseits soll ich mit diesen 4 punkten noch die 4 geraden zeichnen (also alle strecken zeichnen...)...und ich weiß jetzt nicht genau in welche klasse ich  die methode paint unterbringe bzw. wie ich die punkte in koordinaten umwandle,wobei eigentlich hab ich das schon(bei den strecken)...eher wie ich es in dem befehl drawLine unterbringe oder was ich halt machen muss....weil ich auch nicht ganz verstanden habe, wie ich das in andren klassen weiter verwenden kann

im moment sind die Punkte noch fix sollen,aber später eingegeben werden 

habe bereits schon einige versuche gestartet...jedoch leider zu keiner lösung gekommen,habe auch weiters versucht in der API-Bibliothek was zu finden,aber wirklich weiter kam ich da auch nicht....


```
import javax.swing.JApplet;
import java.awt.Graphics;

public class punkt_strecke_1 extends JApplet{

	public static void main(String[] args)
	{
		/*  Punkt a = new Punkt(args[0],args[1]);
		    Punkt b = new Punkt(args[2],args[3]);
		    Punkt c = new Punkt(args[4],args[5]);
		    Punkt d = new Punkt(args[6],args[7]);
		*/
		    Punkt a = new Punkt(0,0);
			Punkt b = new Punkt(4,0);
			Punkt c = new Punkt(1,1);
	   		Punkt d = new Punkt(3,1);

		    Strecke ab = new Strecke(a,b);
	    	Strecke cd = new Strecke(c,d);

			boolean pp;
			pp = ab.stehtNormal (cd);

			if (pp == true) {
			System.out.println("Die Geraden AB und CD stehen aufeinander normal");
			}
			else
			{
			System.out.println("Die Geraden AB und CD stehen aufeinander NICHT normal");
			}
          /*	public void init()
	        {
		      resize(300,300);
	         }

              	public void paint(Graphics g)
	       {
		super.paint(g);
		g.drawLine(ax, bx, ay, by);
		g.drawLine(ax, cx, ay, cy);
		g.drawLine(bx, cx, by, cy);
		g.drawLine(cx, dx, cy, dy);		
	        }*/
	}
}

class Punkt
{
	double x, y;

	public Punkt(String a, String b)
	{
		x = Double.parseDouble(a);
		y = Double.parseDouble(b);
	}

	public Punkt(double px, double py)
	{
        x = px;
        y = py;
    }
}

class Strecke
{
	Punkt P, Q, R, S;

	public Strecke(Punkt A, Punkt B)
	{
		P= A;
		Q= B;
	}

	public boolean stehtNormal(Strecke cd)
	{
		double px = Q.x - P.x;
		double py = Q.y - P.y;

		double qx = cd.Q.x - cd.P.x;
		double qy = cd.Q.y - cd.P.y;

		double normal = px*qx + py*qy;

		System.out.println(normal);

        if (normal == 0)
        {
			boolean pp = true;
		    return pp;
		}
		else
		{
			boolean pp = false;
			return pp;
		}
	}
}
```


----------



## SlaterB (4. Dez 2007)

ähm, so wie das aussiehst, ist dir grundsätzlich der Aufbau von JApplets nicht bekannt,
hast du kein Lehrbuch/ Tutorial mit Beispielen? 

willst du überhaupt ein Applet für einen Browser?
zumindest zum testen könntest du ja ein JFrame nehmen, falls dir das mehr zusagt


----------



## Zwergal (4. Dez 2007)

nein ich hab leider kein lehrbuch oder ähnliches...ich ebsitz nur ein kleines skriptum,aber wirklich hilfreich war das nicht...da stehn grad mal was applets betrifft die  grundbefehle drinnen...und das JFrame sagt mir auch nicht wirklich zu....


----------



## SlaterB (4. Dez 2007)

so, nach
http://www.u-helmich.de/inf/BlueJ/kurs11/seiten/Folge05.pdf
liegst du wohl doch nicht so falsch wie ich gleich gedeppert habe 
init und paint sollte reichen,

nun kommentiere mal dein paint wieder aus und male dort erstmal testweise 
g.drawLine(50, 50, 100, 100); 
klaptt das?
evtl auch mal ein großes Rechteck befüllen, um die Zeichen-Grenzen zu erkennen, falls vorhanden,

--------

nun brauchst du die Strecken bzw. Punkte,
die hast du bisher in der main deklariert,

das ist schlecht, zum einen sind sie außerhalb der main nicht vorhanden,
zum anderen wird beim Aufruf des JApplets die main gar nicht ausgeführt?,
das muss alles z.B. in die init()-Operation, oder strukturierter in eine separate Logik-Klasse,

am wichtigesten ist nun aber, die Objekte für paint() bekannt zu machen,
die Strecken müssten z.B. Exemplarvariablen des JApplets sein


----------



## Zwergal (4. Dez 2007)

danke mal fürs pdf-file...

wenn ich fixe werte eingebe kann ich linien und rechtecke ohne probleme zeichnen lassen...

gut..jetzt weiß ich schon mal warum das nicht funktioniert hat,irgendwie logisch,wenn die main methode nicht aufgerufen wird...

was genau muss ich jetzt aus der main methode in die init()-operation bzw. wenn ichs in der init definier is es für die main wieder nicht zugreif bar oder??  also müsst ich meine punkte zum beispiel zweimal "definieren"?


----------



## SlaterB (4. Dez 2007)

nix zweimal definieren, die main brauchst du gar nicht, denn das JApplet wird doch anders erstellt?
allerhöchstens würde in der main 1-2 Zeilen mit 'starte JApplet' stehen,

aller Code gehört in die init(), bzw. strukturiert in Unteroperationen/ Unterklassen, von der init()-Operation aufgerufen


----------



## Zwergal (4. Dez 2007)

naja das problem is ich brauch meine punkte und strecken auch für die überprüfung cd auf ab normal steht...und das hat nix mitn JApplet zu tun,dass soll extra überprüft werden...und wenn ich das jetzt im init() mach...kennts die main methode nicht...


----------



## SlaterB (4. Dez 2007)

ein JApplet ist ALLES, es geht gar nicht anders,
erst kam Gott und dann die Welt oder so

erst kommt das kleine JApplet und selbst wenn dein Programm danach 100 Jahre lang Gencode analysiert, 
ändert das nichts an der Tatsache, dass es mit der init()-Operation statt der main() gestartet wird,

das heißt ja nicht, dass der ganze Code in der init()-Operation stehen musst,
du könntest von init() sogar die main-Operation aufrufen wenn es dich glücklicher macht,
oder irgendeine Controller-Klasse starten oder sonstwas,

hier gehts nur um Programmfluss, nicht um Zuständigkeiten


----------



## Zwergal (4. Dez 2007)

aso...ok danke....jetzt hab ichs verstanden...werd mir das dann morgen nochmal genau anschaun...im mment wirds mir einfach schon zu viel....

auf jeden fall mal danke....


----------

