WindDirection.java 2.2 KB

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