plot.c 797 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <grass/gis.h>
  4. #include <grass/display.h>
  5. #include "local_proto.h"
  6. void plot(double lon1, double lat1, double lon2, double lat2,
  7. int line_color, int text_color)
  8. {
  9. int nsteps = 1000;
  10. int i;
  11. D_setup(0);
  12. D_use_color(line_color);
  13. if (lon1 == lon2) {
  14. D_line_abs(lon1, lat1, lon2, lat2);
  15. return;
  16. }
  17. if (lon1 > lon2) {
  18. double tmp = lon1;
  19. lon1 = lon2;
  20. lon2 = tmp;
  21. }
  22. G_shortest_way(&lon1, &lon2);
  23. G_begin_rhumbline_equation(lon1, lat1, lon2, lat2);
  24. D_begin();
  25. for (i = 0; i <= nsteps; i++) {
  26. double lon = lon1 + (lon2 - lon1) * i / nsteps;
  27. double lat = G_rhumbline_lat_from_lon(lon);
  28. if (i == 0)
  29. D_move_abs(lon, lat);
  30. else
  31. D_cont_abs(lon, lat);
  32. }
  33. D_end();
  34. D_stroke();
  35. }