Liebe Community,
ich brauche regelmäßig für GIS Tätigkeiten ein regelmäßiges Punktmaschennetz, weswegen ich mich jetzt daran gewagt habe Java ein wenig zu studieren und diese Aufgabe umzusetzen.
Ich brauche das Punktgitter für ein Netz aus Bohrungen, bei dem ich regelmäßige Abstände im Feld gemessen habe und nur drei Eckpunkte genau mit dem GPS eingemessen habe.
Ich bin auch schon weit gekommen nur komme ich jetzt nicht mehr weiter.
Ausgangsbasis:
Ich brauche ein Programm dem ich drei Punkte eines großen Rechtecks angebe (ABC), wobei B der Eckpunkt sein soll.
Dann will ich die Strecken (B nach A) und (B nach C) in regelmäßige Stücke unterteilen, so dass ich ein Raster erhalte.
Die Knotenpunkte des Rasters möchte ich dann als Liste mit xy Koordinaten ausgeben lassen.
Mein bisheriger Ansatz sieht wie untenstehend aus.
Ich habe eine Klasse Punkt mit der wichtigen Methode vektorpart die mir den Vektor zum benachbarten Knotenpunkt auf den
beiden Laufrichtungen BA oder BC liefert und eine Methode mit der ich einen Punkt mit dem jeweiligen Vektor addieren kann (addvektor).
Ich habe dann in der main Klasse Draw, erstmal eine Zeile in ba-Richtung manuell berrechnet und dann diese Prozedur für die Zeile mit einer Forschleife automatisiert. Jetzt möchte ich die einzelnen Knotenpunkte auf der Geraden BA als Startpunkte für die Addition der multiplen Teile des Teilvektors in BC Richtung nehmen, um somit das ganze Netz aufzubauen. Aber hier hänge ich leider und komme nicht weiter.
Ich hatte versucht ein 2dimensionales Array aufzubauen, aber kriege nur Fehlermeldungen.
Ich hoffe meine Anfrage stößt auf Interesse und Jemand kann mir hier helfen.
Viele liebe Grüße
Confugere
hier meine Klasse Punkt, das Setzen eines Punktes mit setx und sety über die Tastatureingabe sei erstmals zu ignorieren, weswegen ich die Klasse Tastatur weglasse.
die Erzeugung des Gitters soll dann wie folgt aussehen, manuell klappt es schon.
ich brauche regelmäßig für GIS Tätigkeiten ein regelmäßiges Punktmaschennetz, weswegen ich mich jetzt daran gewagt habe Java ein wenig zu studieren und diese Aufgabe umzusetzen.
Ich brauche das Punktgitter für ein Netz aus Bohrungen, bei dem ich regelmäßige Abstände im Feld gemessen habe und nur drei Eckpunkte genau mit dem GPS eingemessen habe.
Ich bin auch schon weit gekommen nur komme ich jetzt nicht mehr weiter.
Ausgangsbasis:
Ich brauche ein Programm dem ich drei Punkte eines großen Rechtecks angebe (ABC), wobei B der Eckpunkt sein soll.
Dann will ich die Strecken (B nach A) und (B nach C) in regelmäßige Stücke unterteilen, so dass ich ein Raster erhalte.
Die Knotenpunkte des Rasters möchte ich dann als Liste mit xy Koordinaten ausgeben lassen.
Mein bisheriger Ansatz sieht wie untenstehend aus.
Ich habe eine Klasse Punkt mit der wichtigen Methode vektorpart die mir den Vektor zum benachbarten Knotenpunkt auf den
beiden Laufrichtungen BA oder BC liefert und eine Methode mit der ich einen Punkt mit dem jeweiligen Vektor addieren kann (addvektor).
Ich habe dann in der main Klasse Draw, erstmal eine Zeile in ba-Richtung manuell berrechnet und dann diese Prozedur für die Zeile mit einer Forschleife automatisiert. Jetzt möchte ich die einzelnen Knotenpunkte auf der Geraden BA als Startpunkte für die Addition der multiplen Teile des Teilvektors in BC Richtung nehmen, um somit das ganze Netz aufzubauen. Aber hier hänge ich leider und komme nicht weiter.
Ich hatte versucht ein 2dimensionales Array aufzubauen, aber kriege nur Fehlermeldungen.
Ich hoffe meine Anfrage stößt auf Interesse und Jemand kann mir hier helfen.
Viele liebe Grüße
Confugere
hier meine Klasse Punkt, das Setzen eines Punktes mit setx und sety über die Tastatureingabe sei erstmals zu ignorieren, weswegen ich die Klasse Tastatur weglasse.
Java:
//Instanzvariablen
public class Punkt {
private double x;
private double y;
// lehrer Konstruktor
public Punkt() {
this.x = 0;
this.y = 0;
}
public Punkt(double x, double y) {
this.x = x;
this.y = y;
}
public void setx() {
this.x = Tastatur.readdouble("X-Wert eingeben");
}
public double getx() {
return this.x;
}
public void sety() {
this.y = Tastatur.readdouble("Y-Wert eingeben");
}
public double gety() {
return this.y;
}
public Punkt vektor(Punkt other) {
double deltax = other.x - this.x;
double deltay = other.y - this.y;
Punkt vektor = new Punkt(deltax, deltay);
return vektor;
}
public Punkt addvektor(Punkt other) {
double addx = other.x + this.x;
double addy = other.y + this.y;
Punkt add = new Punkt(addx, addy);
return add;
}
public Punkt addmultivektor(Punkt other, Punkt next, int multi, int multi2) {
double addx = (other.x * multi) + this.x;
double addy = (other.y * multi) + this.y;
double addxb = (next.x * multi2) + addx;
double addyb = (next.y * multi2) + addy;
Punkt addmulti = new Punkt(addxb, addyb);
return addmulti;
}
public Punkt vektorpart(Punkt other, int div) {
double deltax = other.x - this.x;
double deltay = other.y - this.y;
double partx = deltax / div;
double party = deltay / div;
Punkt vektorpart = new Punkt(partx, party);
return vektorpart;
}
public void printPunkt() {
double a = getx();
double b = gety();
System.out.print(a);
System.out.print(";");
System.out.println(b);
}
}
die Erzeugung des Gitters soll dann wie folgt aussehen, manuell klappt es schon.
Java:
public class Draw {
public static void main(String[] args) {
// TODO Auto-generated method stub
//------------------------------------------------------
//--------------Test ohne for-Schleife------------------
//------------------------------------------------------
//Punkte erzeugen
Punkt a = new Punkt(3,0);
Punkt b = new Punkt(0,0);//Eckpunkt
Punkt c = new Punkt(0,4);
//vektor b->a und b->c
Punkt vec_ba = b.vektor(a);
Punkt vec_bc = b.vektor(c);
//Teilvektoren ba = Zeilen, bc = Spalten
Punkt vec_ba_part = b.vektorpart(a,3);
Punkt vec_bc_part = b.vektorpart(c,4);
//Punkte a1,a2,a3
Punkt a1 = b.addvektor(vec_ba_part);
Punkt a2 = a1.addvektor(vec_ba_part);
Punkt a3 = a2.addvektor(vec_ba_part);
//print
System.out.println("Punkte");
a.printPunkt();
b.printPunkt();
c.printPunkt();
System.out.println("Vektoren");
vec_ba.printPunkt();//addieren in Zeilenrichtung
vec_bc.printPunkt();//addieren in Spaltenrichtung
System.out.println("Teilvektoren");
vec_ba_part.printPunkt();
vec_bc_part.printPunkt();
System.out.println("neue Punkte");
a1.printPunkt();
a2.printPunkt();
a3.printPunkt();
//------------------------------------------------------
//-------------- for-Schleife---------------------------
//------------------------------------------------------
System.out.println("Automatisierung Zeilenaddition");
//Automatisierung und addieren von vec_ba in Zeilenrichtung
int zeilen = 3;
int spalten = 4;
Punkt[] pArray = new Punkt[zeilen+1];
pArray[0] = b;
for(int i=1; i<pArray.length; i++){
//
pArray[i] = pArray[i-1].addvektor(vec_ba_part);
//
}
for(int p=0; p<pArray.length; p++){
//int k=j+1;
pArray[p].printPunkt();
//pArray[j].abzaehlen();
//pArray[j].displayPersonDetails();
}
System.out.println("manuell Zeilen&Spalten");
//
Punkt[][] ppArray = new Punkt[zeilen+1][spalten+1];
ppArray[0][0] = b;
ppArray[1][0] = ppArray[0][0].addmultivektor(vec_ba_part, vec_bc_part, 1, 0);
ppArray[2][0] = ppArray[0][0].addmultivektor(vec_ba_part, vec_bc_part, 2, 0);
ppArray[3][0] = ppArray[0][0].addmultivektor(vec_ba_part, vec_bc_part, 3, 0);
ppArray[1][1] = ppArray[0][0].addmultivektor(vec_ba_part, vec_bc_part, 1 ,1);
ppArray[0][0].printPunkt();
ppArray[1][0].printPunkt();
ppArray[2][0].printPunkt();
ppArray[3][0].printPunkt();
ppArray[1][1].printPunkt();
///.........
System.out.println("Automatisierung Zeilen&Spalten");
for(int k=0; k<=zeilen+1; k++){
for (int j=0; j<=spalten+1; j++){
ppArray[k][j] = ppArray[k-k][j-j].addmultivektor(vec_ba_part, vec_bc_part, k, j);
// ppArray[k][j] = ppArray[k][j].addmultivektor(vec_bc_part, j);
// }
// ppArray[0][0].printPunkt();
// ppArray[1][0].printPunkt();
// ppArray[2][0].printPunkt();
// ppArray[3][0].printPunkt();
// for (int ip=0;ip<=zeilen;ip++) {
// for (int jp=0;jp<=spalten;jp++) {
// ppArray[ip][jp].printPunkt();
// }
}
}
}
}