WindDirection.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package weerstation1;
  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. maxMin();
  15. modus();
  16. }
  17. public void displayGraph()
  18. {
  19. GUIboard.clearBottom();
  20. char[] charray = " West East".toCharArray();
  21. IO.writeShort(0x40, '\n');
  22. for(char ch : charray)
  23. {
  24. IO.writeShort(0x40, ch);
  25. }
  26. int x,y;
  27. int radius = 15;
  28. double degree= getCurrent();
  29. int x2 = 0;
  30. int y2 = 0;
  31. degree -= 90;
  32. if( degree < 0){
  33. degree += 360;
  34. }
  35. for(double i = 0; i< 360; i+= 1)
  36. {
  37. x = (int)(64 + (radius*Math.cos(i * Math.PI / 180)));
  38. y = (int)(16 + radius*Math.sin(i * Math.PI / 180));
  39. if(i == degree){
  40. x2 = x;
  41. y2 = y;
  42. }
  43. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  44. }
  45. line(64, 16, x2, y2);
  46. }
  47. public static void line(int x1,int y1,int x2, int y2) {
  48. if(x1 > x2)
  49. {
  50. int x3 = x1;
  51. x1 = x2;
  52. x2 = x3;
  53. int y3 = y1;
  54. y1 = y2;
  55. y2 = y3;
  56. }
  57. int x,y;
  58. int deltax = x2 - x1 ;
  59. int deltay = y2 - y1 ;
  60. for (x=x1; x<=x2; x++) {
  61. y = y1 + deltay * (x - x1) / deltax;
  62. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  63. }
  64. }
  65. private void createList(ArrayList<Measurement> measurement2)
  66. {
  67. if(!list.isEmpty())
  68. {
  69. list.clear();
  70. }
  71. for(Measurement ms : measurement2)
  72. {
  73. list.add( (double)ms.getRawWindDir());
  74. }
  75. }
  76. }