Test Programm Formen

This commit is contained in:
ngb 2021-12-23 11:15:02 +01:00
parent 8ecdf7569c
commit 9f3a2ae257
2 changed files with 181 additions and 0 deletions

View File

@ -0,0 +1,116 @@
package schule.ngb.zm;
import schule.ngb.zm.formen.Form;
import schule.ngb.zm.formen.Rechteck;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class TestAttraction extends Zeichenfenster {
public static void main(String[] args) {
new TestAttraction();
}
@Override
public void einstellungen() {
setSize(800, 600);
setTitel("My test Window");
//setFramesPerSecond(5);
s2dl = new Shape2DEbene();
hinzu(s2dl);
}
Shape2DEbene s2dl;
Vektor posA, posB, velB, posC, velC;
double massA = 500, massB = 1, massC = 4.3, G = 5.0;
Rechteck recht;
@Override
public void vorbereiten() {
//zeichnung.hide();
zeichnung.clear(200);
posA = new Vektor(0, 0);
posB = new Vektor(-100, -100);
velB = new Vektor(10, -10);
posC = new Vektor(200, 100);
velC = new Vektor(1, 14);
zeichnung.translate(breite /2, hoehe /2);
zeichnung.shear(0.1, 0.5);
recht = new Rechteck(50, 50, 150, 75);
recht.setFuellfarbe(200);
recht.setKonturFarbe(255, 0, 64);
recht.setKonturDicke(2.5);
recht.setKonturArt(Form.GESTRICHELT);
formen.anzeigen(recht);
zeichnung.verstecken();
//schule.ngb.zm.formen.verstecken();
s2dl.setColor(64,200,128);
s2dl.add(new Rectangle2D.Double(100, 100, 120, 80));
}
public void zeichnen() {
zeichnung.setStrokeColor(255);
zeichnung.setStrokeWeight(4.0);
zeichnung.setKonturArt(GESTRICHELT);
zeichnung.clear(33, 33, 33, 100);
zeichnung.setColor(Color.ORANGE);
zeichnung.pie(posA.x, posA.y, 80, 30, 60);
zeichnung.setColor(Color.YELLOW);
zeichnung.circle(posA.x, posA.y, 60);
Vektor acc = acceleration(posA, posB, massA, massB);
velB.addieren(acc);
posB.addieren(velB);
zeichnung.setColor(Color.BLUE);
zeichnung.circle(posB.x, posB.y, 20);
acc = acceleration(posA, posC, massA, massC);
velC.addieren(acc);
posC.addieren(velC);
zeichnung.setColor(Color.GREEN);
zeichnung.circle(posC.x, posC.y, 20);
zeichnung.rotate(1);
formen.leeren();
double x = recht.getX();
x = (x+100*delta)% breite;
recht.setX(x);
}
Vektor acceleration(Vektor a, Vektor b, double ma, double mb ) {
Vektor acc = Vektor.subtrahieren(a, b);
double draw = (G*ma*mb)/acc.laengeQuad();
acc.setLaenge(draw*delta);
acc.beschraenken(3, 30);
return acc;
}
public void mouseDragged() {
zeichnung.translate(mausX - lmausX, mausY - lmausY);
}
boolean zoom = true;
public void mouseClicked() {
//canvas.translateToCanvas(mouseX-width/2.0, mouseY-height/2.0);
if( zoom ) {
zeichnung.scale(2.0);
} else {
zeichnung.scale(.5);
}
zoom = !zoom;
}
}

View File

@ -0,0 +1,65 @@
package schule.ngb.zm;
import schule.ngb.zm.formen.*;
import java.awt.*;
import java.awt.geom.Point2D;
import java.util.Random;
public class TestFormen extends Zeichenfenster {
public static void main( String[] args ) {
new TestFormen();
}
Kurve k;
@Override
public void vorbereiten() {
setSize(400, 400);
k = new Kurve(50, 50, 100, 50, 100, 100,150, 100);
//formen.anzeigen(new Kurve(50, 50, 100, 50, 150, 100));
formen.anzeigen(k);
k.verschiebeNach(200, 200);
k.skalieren(1.1);
showDot(k.getStartpunkt());
showDot(k.getKontrollpunkt1());
showDot(k.getKontrollpunkt2());
showDot(k.getEndpunkt());
}
@Override
public void aktualisieren( double delta ) {
}
@Override
public void zeichnen() {
formen.leeren();
}
private void showDot( Point2D p ) {
showDot(p.getX(), p.getY(), randomColor());
}
private void showDot( double x, double y, Color clr ) {
Punkt p = new Punkt(x, y);
p.setFuellfarbe(clr);
p.setKonturFarbe(clr);
formen.anzeigen(p);
}
Random rand = new Random();
private Color randomColor() {
return new Color(
rand.nextInt(256),
rand.nextInt(256),
rand.nextInt(256),
128
);
}
}