WindDirection.java 2.3 KB

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