Hi!
ich brauche Hilfe.Das ist mein ganze Code
Plotter.java
FktGraph.java
Wie kann ich Linie zwischen (0,-13) und (5,0) weg machen?
ich brauche Hilfe.Das ist mein ganze Code
Plotter.java
Java:
package pFunktionsPlotter;
import java.awt.*;
import java.awt.event.*;
public class Plotter extends Frame {
public Plotter() {
setTitle("Funktionsplotter");
FktGraph p = new FktGraph(-5,5,-4,3);
add(p);
setSize(700, 700);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String args[]) {
new Plotter();
}
}
Java:
package pFunktionsPlotter;
import java.awt.*;
import java.text.DecimalFormat;
public class FktGraph extends Panel {
int maxX, maxY;
double xa, xe, ya, ye;
public FktGraph(double xa, double xe, double ya, double ye) {
this.xa = xa;
this.xe = xe;
this.ya = ya;
this.ye = ye;
}
double f(double x)
{
return 1/(x*x);
}
double g(double x)
{
return (-(x*x)-1);
}
int pixX(double x) {
return (int) ((x - xa) / (xe - xa) * maxX);
}
int pixY(double y) {
return (int) ((ye - y) / (ye - ya) * maxY);
}
double karX(int px) {
return px * (xe - xa) / maxX + xa;
}
double karY(int py) {
return ye - py * (ye - ya) / maxY;
}
int tickdistx(double w){ return (pixX(w)-pixX(0));}
int tickdisty(double w){ return (pixY(0)-pixY(w));}
DecimalFormat df = new DecimalFormat("#0.########");
void zeichneAchsen(Graphics g)
{
g.drawLine(0,pixY(0),maxX,pixY(0)); // x-Achse
g.drawLine(maxX-10,pixY(0)-5,maxX,pixY(0)); // Spitze
g.drawLine(maxX-10,pixY(0)+5,maxX,pixY(0));
g.drawLine(pixX(0),maxY,pixX(0),0); // y-Achse
g.drawLine(pixX(0)-5,10,pixX(0),0); // Spitze
g.drawLine(pixX(0)+5,10,pixX(0),0);
// Ticks auf der x-Achse
double tick = 1;
double start = 0;
while (tickdistx(tick) > 81 || tickdistx(tick) <31 )
{
if (tickdistx(tick) > 81) tick = tick/2;
if (tickdistx(tick) < 31) tick = tick*2;
}
start=0;
while (start-tick>xa)start = start-tick;
while (start < xe)
{
g.drawLine(pixX(start), pixY(0)-3,pixX(start),pixY(0) + 3); // Markierung senkrecht zur x-Achse
g.drawString(df.format(start),pixX(start),pixY(0) + 20); // Zahlenwert mit einer Kommastelle
start = start + 2*tick;
}
// Ticks auf der y-Achse
tick = 1;
start = 0;
while (tickdisty(tick) > 81 || tickdisty(tick) < 31 )
{
if (tickdisty(tick) > 81) tick = tick/2;
if (tickdisty(tick) < 31) tick = tick*2;
}
start=0;
while (start-tick>ya)start = start-tick;
while (start < ye)
{
g.drawLine(pixX(0)-3, pixY(start),pixX(0)+3,pixY(start));
if(start!=0) g.drawString(df.format(start),pixX(0)+5,pixY(start)+5);
start = start + tick;
}
}
public void paint(Graphics g) {
maxX = this.getBounds().width;
maxY = this.getBounds().height;
zeichneAchsen(g);
int oldx = 0;
int oldy = pixY(f(xa));
int py;
for (int px = 0; px < maxX; px = px + 1) {
py = pixY(f(karX(px)));
g.setColor(Color.blue);
g.drawLine(oldx, oldy, px, py);
oldx = px;
oldy = py;
}
for (int px = 0; px < maxX; px = px + 1) {
py = pixY(g(karX(px)));
g.setColor(Color.blue);
g.drawLine(oldx, oldy, px, py);
oldx = px;
oldy = py;
}
}
}