WindDirection.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import java.util.ArrayList;
  2. public class WindDirection extends Grootheid{
  3. public ArrayList<Double> list;
  4. //constructor
  5. public WindDirection(Measurement measurement1, ArrayList<Measurement> measurement2){
  6. list = new ArrayList<Double>();
  7. updateRecent(measurement1);
  8. updatePeriod(measurement2);
  9. }
  10. public void updateRecent(Measurement measurement1){
  11. setCurrent(measurement1.getRawWindDir());
  12. }
  13. public void updatePeriod(ArrayList<Measurement> measurement2){
  14. createList(measurement2);
  15. setMode(StatisticsCalculator.modus(list));
  16. }
  17. public void display(){
  18. super.display();
  19. GUIboard.clearLeft();
  20. GUIboard.clearRight();
  21. GUIboard.writePageToMatrix("Windrichting", "Modus: " + getMode(), "");
  22. }
  23. public void displayGraph()
  24. {
  25. GUIboard.clearBottom();
  26. char[] charray = " West East".toCharArray();
  27. IO.writeShort(0x40, '\n');
  28. for(char ch : charray)
  29. {
  30. IO.writeShort(0x40, ch);
  31. }
  32. int x,y;
  33. int radius = 15;
  34. double degree= getCurrent();
  35. int x2 = 0;
  36. int y2 = 0;
  37. degree -= 90;
  38. if( degree < 0){
  39. degree += 360;
  40. }
  41. for(double i = 0; i< 360; i+= 1)
  42. {
  43. x = (int)(64 + (radius*Math.cos(i * Math.PI / 180)));
  44. y = (int)(16 + radius*Math.sin(i * Math.PI / 180));
  45. if(i == degree){
  46. x2 = x;
  47. y2 = y;
  48. }
  49. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  50. }
  51. line(64, 16, x2, y2);
  52. }
  53. public static void line(int x1,int y1,int x2, int y2) {
  54. if(x1 > x2)
  55. {
  56. int x3 = x1;
  57. x1 = x2;
  58. x2 = x3;
  59. int y3 = y1;
  60. y1 = y2;
  61. y2 = y3;
  62. }
  63. int x,y;
  64. int deltax = x2 - x1 ;
  65. int deltay = y2 - y1 ;
  66. for (x=x1; x<=x2; x++) {
  67. y = y1 + deltay * (x - x1) / deltax;
  68. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  69. }
  70. }
  71. private void createList(ArrayList<Measurement> measurement2)
  72. {
  73. if(!list.isEmpty())
  74. {
  75. list.clear();
  76. }
  77. for(Measurement ms : measurement2)
  78. {
  79. list.add( (double)ms.getRawWindDir());
  80. }
  81. }
  82. }