Zasadniczy wsad inicjalizacyjny.
This commit is contained in:
358
src/main/java/pl/wat/ms4ds/terenfunkcje/Kwadrat.java
Normal file
358
src/main/java/pl/wat/ms4ds/terenfunkcje/Kwadrat.java
Normal file
@@ -0,0 +1,358 @@
|
||||
package pl.wat.ms4ds.terenfunkcje;
|
||||
|
||||
|
||||
import pl.wat.ms4ds.common.EGeoDirection;
|
||||
|
||||
public class Kwadrat {
|
||||
|
||||
public static final Kwadrat EMPTY_SQUARE = new Kwadrat(null, 0.0f, 0.0f, 0.0f, 0.0f, 200, 0,
|
||||
new boolean[8], new boolean[8], new boolean[8]);
|
||||
|
||||
float stopienZabudowy;
|
||||
float stopienZalesienia;
|
||||
float stopienZawodnienia;
|
||||
float stopienZabagnienia;
|
||||
boolean jestDroga[];
|
||||
boolean jestRow[];
|
||||
boolean jestPrzeszkodaWodna[];
|
||||
int roznicaWzniesien;
|
||||
int wysokoscSrednia;
|
||||
|
||||
/**
|
||||
* The height above the level of the sea.
|
||||
*/
|
||||
short elevation;
|
||||
/**
|
||||
* 0 - BARE_GROUND
|
||||
* 1 - GRASS
|
||||
* 2 - SWAMP
|
||||
* 3 - WATER
|
||||
* 4 - SCRUB, BUSHES
|
||||
* 5 - BUILDINGS
|
||||
* 6 - FOREST
|
||||
*/
|
||||
short terrainType;
|
||||
/**
|
||||
* Rodzaj drogi na danym kierunku.
|
||||
* 0 - no road, 1 - small roads, 2 - minor roads, 3 - major roads
|
||||
*/
|
||||
byte[] roads;
|
||||
/**
|
||||
* Rodzaj przeszkody wodnej na danym kierunku.
|
||||
* 0 - no watercourse, 1 - drain, ditch, 2 - canal, stream, 3 - river
|
||||
*/
|
||||
byte[] waterWays;
|
||||
|
||||
|
||||
|
||||
transient RightBigSquare bs;
|
||||
|
||||
public float getStopienZabudowy() {
|
||||
return stopienZabudowy;
|
||||
}
|
||||
|
||||
public float getStopienZalesienia() {
|
||||
return stopienZalesienia;
|
||||
}
|
||||
|
||||
public float getStopienZawodnienia() {
|
||||
return stopienZawodnienia;
|
||||
}
|
||||
|
||||
public float getStopienZabagnienia() {
|
||||
return stopienZabagnienia;
|
||||
}
|
||||
|
||||
public int getRoznicaWzniesien() {
|
||||
return roznicaWzniesien;
|
||||
}
|
||||
|
||||
public int getWysokoscSrednia() {
|
||||
return wysokoscSrednia;
|
||||
}
|
||||
|
||||
public boolean[] getJestDroga() {
|
||||
return jestDroga;
|
||||
}
|
||||
|
||||
public boolean jestOdcinekDrogi() {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (jestDroga[i])
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean getJestDroga(EGeoDirection naKierunku) {
|
||||
if (naKierunku == EGeoDirection.UNDEFINED) {
|
||||
return false;
|
||||
}
|
||||
return jestDroga[naKierunku.id];
|
||||
}
|
||||
|
||||
public boolean[] getJestRow() {
|
||||
return jestRow;
|
||||
}
|
||||
|
||||
public boolean[] getJestPrzeszkodaWodna() {
|
||||
return jestPrzeszkodaWodna;
|
||||
}
|
||||
|
||||
public void setStopienZabudowy(float stopienZabudowy) {
|
||||
this.stopienZabudowy = stopienZabudowy;
|
||||
normalizujDanePokrycia();
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setStopienZalesienia(float stopienZalesienia) {
|
||||
this.stopienZalesienia = stopienZalesienia;
|
||||
normalizujDanePokrycia();
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setStopienZawodnienia(float stopienZawodnienia) {
|
||||
this.stopienZawodnienia = stopienZawodnienia;
|
||||
normalizujDanePokrycia();
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setStopienZabagnienia(float stopienZabagnienia) {
|
||||
this.stopienZabagnienia = stopienZabagnienia;
|
||||
normalizujDanePokrycia();
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void normalizujDanePokrycia() {
|
||||
float suma = stopienZalesienia + stopienZawodnienia + stopienZabudowy + stopienZabagnienia;
|
||||
if (suma > 1.0f) {
|
||||
stopienZalesienia /= suma;
|
||||
stopienZawodnienia /= suma;
|
||||
stopienZabudowy /= suma;
|
||||
stopienZabagnienia = 1.0f - stopienZalesienia - stopienZawodnienia - stopienZabudowy;
|
||||
}
|
||||
}
|
||||
|
||||
public void setRoznicaWzniesien(int roznicaWzniesien) {
|
||||
this.roznicaWzniesien = roznicaWzniesien;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setWysokoscSrednia(int wysokoscSrednia) {
|
||||
this.wysokoscSrednia = wysokoscSrednia;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestDroga(boolean[] czyJestDroga) {
|
||||
this.jestDroga = czyJestDroga;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestDroga(EGeoDirection naKierunku, boolean czyJest) {
|
||||
if (naKierunku == EGeoDirection.UNDEFINED) {
|
||||
return;
|
||||
}
|
||||
this.jestDroga[naKierunku.id] = czyJest;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestPrzeszkodaWodna(EGeoDirection naKierunku, boolean czyJest) {
|
||||
if (naKierunku == EGeoDirection.UNDEFINED) {
|
||||
return;
|
||||
}
|
||||
this.jestPrzeszkodaWodna[naKierunku.id] = czyJest;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestRow(EGeoDirection naKierunku, boolean czyJest) {
|
||||
if (naKierunku == EGeoDirection.UNDEFINED) {
|
||||
return;
|
||||
}
|
||||
this.jestRow[naKierunku.id] = czyJest;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestRow(boolean[] czyJestRow) {
|
||||
this.jestRow = czyJestRow;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public void setJestPrzeszkodaWodna(boolean[] czyJestPrzeszkodaWodna) {
|
||||
this.jestPrzeszkodaWodna = czyJestPrzeszkodaWodna;
|
||||
// try {
|
||||
// if (null != bs) {
|
||||
// bs.updateFile(false);
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// }
|
||||
}
|
||||
|
||||
public float getStopienPofaldowania() {
|
||||
// TODO: dodac do normatywow w klasie Teren (parametr kalibracyjny)
|
||||
float stopienPofaldowania = 0.0f;
|
||||
if (this.roznicaWzniesien >= 50)
|
||||
stopienPofaldowania = 1.0f;
|
||||
else if (this.roznicaWzniesien >= 10)
|
||||
stopienPofaldowania = 0.6f;
|
||||
else if (this.roznicaWzniesien >= 5)
|
||||
stopienPofaldowania = 0.4f;
|
||||
else if (this.roznicaWzniesien >= 3)
|
||||
stopienPofaldowania = 0.2f;
|
||||
return stopienPofaldowania;
|
||||
}
|
||||
|
||||
public Kwadrat() {
|
||||
jestDroga = new boolean[8];
|
||||
jestPrzeszkodaWodna = new boolean[8];
|
||||
jestRow = new boolean[8];
|
||||
}
|
||||
|
||||
public Kwadrat(RightBigSquare _bs, float _stopienZabudowy, float _stopienZalesienia, float _stopienZabagnienia, float _stopienZawodnienia,
|
||||
int _wysokoscSrednia, int _roznicaWzniesien, boolean _czyJestDroga[], boolean _czyJestRow[], boolean _czyJestPrzeszkodaWodna[]){
|
||||
bs = _bs;
|
||||
stopienZabudowy = _stopienZabudowy;
|
||||
stopienZalesienia = _stopienZalesienia;
|
||||
stopienZabagnienia = _stopienZabagnienia;
|
||||
stopienZawodnienia = _stopienZawodnienia;
|
||||
wysokoscSrednia = _wysokoscSrednia;
|
||||
roznicaWzniesien = _roznicaWzniesien;
|
||||
jestDroga = new boolean[8];
|
||||
jestRow = new boolean[8];
|
||||
jestPrzeszkodaWodna = new boolean[8];
|
||||
for (int i = 0; i < _czyJestDroga.length; i++) {
|
||||
jestDroga[i]=_czyJestDroga[i];
|
||||
}
|
||||
for (int i = 0; i < jestRow.length; i++) {
|
||||
jestRow[i]=_czyJestRow[i];
|
||||
}
|
||||
for (int i = 0; i < _czyJestPrzeszkodaWodna.length; i++) {
|
||||
jestPrzeszkodaWodna[i]=_czyJestPrzeszkodaWodna[i];
|
||||
}
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
float f = this.stopienZabudowy * 255.0f;
|
||||
int hex = (int)f;
|
||||
String s = String.format("%02X", hex);
|
||||
String linia = s;
|
||||
linia += " ";
|
||||
|
||||
f = this.stopienZalesienia * 255.0f;
|
||||
hex = (int)f;
|
||||
s = String.format("%02X", hex);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
f = this.stopienZabagnienia * 255.0f;
|
||||
hex = (int)f;
|
||||
s = String.format("%02X", hex);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
f = this.stopienZawodnienia * 255.0f;
|
||||
hex = (int)f;
|
||||
s = String.format("%02X", hex);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
s = String.format("%4d", this.wysokoscSrednia);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
s = String.format("%4d", this.roznicaWzniesien);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
int bity = 0;
|
||||
int bit_1 = 1;
|
||||
for (int i = 0; i < this.jestDroga.length; i++) {
|
||||
if (this.jestDroga[i]) // jest odcinek drogi na tym kierunku
|
||||
bity += bit_1;
|
||||
|
||||
bit_1 = bit_1 << 1;
|
||||
}
|
||||
s = String.format("%02X", bity);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
bity = 0;
|
||||
bit_1 = 1;
|
||||
for (int i = 0; i < this.jestPrzeszkodaWodna.length; i++) {
|
||||
if (this.jestPrzeszkodaWodna[i]) // jest przeszkod na tym kierunku
|
||||
bity += bit_1;
|
||||
|
||||
bit_1 = bit_1 << 1;
|
||||
}
|
||||
s = String.format("%02X", bity);
|
||||
linia += s;
|
||||
linia += " ";
|
||||
|
||||
bity = 0;
|
||||
bit_1 = 1;
|
||||
for (int i = 0; i < this.jestRow.length; i++) {
|
||||
if (this.jestRow[i]) // jest row na tym kierunku
|
||||
bity += bit_1;
|
||||
|
||||
bit_1 = bit_1 << 1;
|
||||
}
|
||||
s = String.format("%02X", bity);
|
||||
linia += s;
|
||||
return linia;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user