WindDirection.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. update24Hour(measurement2);
  9. }
  10. public void updateRecent(Measurement measurement1){
  11. setCurrent(measurement1.getRawWindDir());
  12. }
  13. public void update24Hour(ArrayList<Measurement> measurement2){
  14. createList(measurement2);
  15. calculateMaxMinAvg(list);
  16. }
  17. public void display(){
  18. super.display();
  19. GUIboard.writePageToMatrix("Windrichting", "Gemiddelde: " + getAvg(), "");
  20. }
  21. public void displayGraph()
  22. {
  23. GUIboard.writePageToMatrix("", "West East", "");
  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. System.out.println("x: " + x + " Y: " + y);
  38. if(i == degree){
  39. x2 = x;
  40. y2 = y;
  41. }
  42. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  43. }
  44. line(64, 16, x2, y2);
  45. }
  46. public static void line(int x1,int y1,int x2, int y2) {
  47. if(x1 > x2)
  48. {
  49. int x3 = x1;
  50. x1 = x2;
  51. x2 = x3;
  52. int y3 = y1;
  53. y1 = y2;
  54. y2 = y3;
  55. }
  56. int x,y;
  57. int deltax = x2 - x1 ;
  58. int deltay = y2 - y1 ;
  59. for (x=x1; x<=x2; x++) {
  60. y = y1 + deltay * (x - x1) / deltax;
  61. IO.writeShort(0x42, 1 << 12 | x << 5 | y);
  62. }
  63. }
  64. private void createList(ArrayList<Measurement> measurement2)
  65. {
  66. if(!list.isEmpty())
  67. {
  68. list.clear();
  69. }
  70. for(Measurement ms : measurement2)
  71. {
  72. list.add( (double)ms.getRawWindDir());
  73. }
  74. }
  75. }