# Sinuskurve darstellen



## Corko (9. Jan 2004)

Servus!

Ich will in einem Applet eine Sinuskurve darstellen und zwar so,dass man über ein TextFeld den Bereich eingeben kann (z.B. 0°-180°).

Hab nun folgendes Problem:

Den String im TextFeld habe ich in der Methode winkel() zu einem Double umgewandelt und gebe ihn nun der Methode rechnen():

```
public double winkel()throws NumberFormatException{
		String winkelx_String = tfwinkelx.getText();
		double winkelx_Double;
		winkelx_Double = Double.parseDouble(winkelx_String);
		return winkelx_Double;
	}
	
	public int rechnen(double ergebnis){
		ergebnis=Math.sin(winkel());
		int i =(int) ergebnis;
		
		return i;
		
	}
```


Mit paint() will ich nun die Kurve zeichnen.Ich habe dafür eine for-Schleife benutzt:

```
public void paint(Graphics g){
	
	int xi,yi;  //Pixelkoordinaten
	int xMax=this.getWidth();  //Appletbreite
	int yMax=this.getHeight();	//Applethöhe
	int xAlt=0;  // vorherige Pixelkoordinaten
	int yAlt=yMax/2;
	
	double y;	
	
                for(double x=0; x<i; x=x+0.01){
	
	y=Math.sin(i);
	xi=(int) x;
	yi=(int) y;
	
	g.setColor(Color.red);
	g.drawLine(xAlt,yAlt,xi,yi);
	
	
	xAlt=xi;
	yAlt=yi;
	
	}
	
	}
```

Leider bleibt mein Applet leer   

Wäre super nett,wenn mir jemand einen Tipp geben könnte,bin nämlich schon kurz vorm Verzweifeln.


----------



## Michael (12. Jan 2004)

```
for(double x=0; x<i; x=x+0.01){
```
Wo hattest du den das i definiert? So wie du es gepastet hast, kann man dem Programm nicht wirklich viel anfangen.

Ich kam mit deinem Code nicht wirklich zurecht. Aber ich hab hier mal eine Lösung zusammengeschustert. Kommentare sollten verständlich sein, wenn nicht, dann frag einfach .


```
import java.awt.*;

public class SinusDrawer extends java.applet.Applet {
	int startWinkel;
	int stopWinkel;
	
	public void init() {
		startWinkel = 0; // der Startwinkel ist mal 0°
		stopWinkel = 360; // bitte bis 360° errechnen
		this.setSize(400,200); // Appletgröße		
	}

	public void paint(Graphics g) {
		int NullPunktX = 20; // NullPunkt des Graphen X-Wert
		int NullPunktY = 80; // NullPunkt des Graphen Y-Wert
		int AbsMaxHoeheY = 50; // Max. Höhe des Graphen 
		double SinusWert; // Der Sinuswert (zw. -1 und 0)
		int XPos; // X-Position des errechneten Punktes
		int YPos; // Y-Position des errechneten Punktes
		 
		for (int i = startWinkel; i <= stopWinkel; i++) {
			XPos = i - startWinkel; // X-Position des Punkts setzen
			/*
			 * Math.sin:
			 * beachten: Math.sin erwartet einen Winkel im Bogenmaß
			 * Bogenmaß von Winkel = (PI*Winkel)/180 oder einfach Math.toRadians(Winkel)
			 */
			SinusWert = Math.sin(Math.toRadians((double)i)); // SinusWert errechnen
			YPos = (int)(NullPunktY - (SinusWert*AbsMaxHoeheY)); // Y-Position des Punktes 
			// System.out.println( "XPos:" +XPos + " YPos:" + YPos + " SinusWert:" + SinusWert);			
			g.drawLine(XPos,YPos,XPos,YPos); // Zeichnen und Hurra							
		}
		
	}
}
```

Kannst ja mal copy&pasten und ausprobieren.

Gruß und hoffentlich hilfts dir weiter,
Michael


----------

