Abstract Data Type Garis Header Stable Release Ver. 3.0


Dalam header ini, codenya sedikit saya modifikasi dengan penambahan fungsi untuk mengecek gradien dari suatu garis.

  1. /* file     : garis.h */
  2. /* ADT point          */
  3.  
  4. #ifndef garis_h
  5. #define garis_h
  6. #include "ADTPOINT.h"
  7.  
  8. /* contoh ADT yg memanfaatkan ADT lain */
  9. /* garis dibentuk oleh duah buah point */
  10.  
  11. typedef struct
  12. {
  13.     point paw;      /* titik awal */
  14.     point pakh;     /* titik akhir */
  15. } garis;
  16.  
  17. /* definisi prototipe primitif */
  18. /*** konstruktor membentuk garis ***/
  19.  
  20. void makegaris(point p1,point p2,garis *l);
  21. /* I.S : p1 & p2 terdefinisi */
  22. /* F.S : l terdefinisi dg l.paw=p1 & l.pakh=p2 */
  23. /* membentuk sebuah garis l dari komponen-komponennya */
  24.  
  25. /*** selektor garis ***/
  26. point getpaw (garis l);
  27. /* mengirimkan komponen titik pertama dari l garis */
  28.  
  29. point getpakh(garis l);
  30. /* mengirimkan komponen titik kedua dari l garis*/
  31.  
  32.  
  33. /* kelompok interaksi dengan I/O device, baca/tulis */
  34. void bacagaris(point p1,point p2,garis *l);
  35. /* makegaris(p1,p2) dari p1 dan p2 yang dibaca */
  36.  
  37. void tulisgaris(garis l);
  38. /* nilai p ditulis ke layar dg format ((x,y),(x,y)) */
  39.  
  40. /* kelompok operasi relasional terhadap garis */
  41. boolean garisEQ(garis l1,garis l2);
  42. /* mengirimkan true jika l1=l2 */
  43. /* l1 dikatakan = l2 jika titik awal l1 = titik awal l2*/
  44. /* dan titik akhir l1=titik akhir l2 */
  45.  
  46. boolean garisNEQ(garis l1,garis l2);
  47. /* mengirimkan true jika l1 tidak sama dengan l2 */
  48. /* negasi dari fungsi EQ */
  49.  
  50. /* kelompok menentukan dimana l berada */
  51.  
  52. boolean isgarisonsbx(garis l);
  53. /* menghasilkan true jika l terletak pada sumbu x */
  54.  
  55. boolean isgarisonsby(garis l);
  56. /* menghasilkan true jika l terletak pada sumbu y */
  57.  
  58. int kuadrangaris(garis l);
  59. /* menghasilkan kuadran dari l (dimana paw dan pakh berada) */
  60. /* precondition: l tdk terletak pd slh satu sumbu */
  61.  
  62. /* kelompok predikat lain */
  63.  
  64. int cekGrad (garis l);
  65. /*fungsi baru untuk menghitung SLOPE/GRADIEN copyright by TWOH*/
  66.  
  67. boolean isgaristegaklurus(garis l,garis l1);
  68. /* menghasilkan true jika l tegak lurus l1 */
  69.  
  70. boolean isgarissejajar(garis l,garis l1);
  71. /* menghasilkan true jika l sejajar terhadap l1 */
  72.  
  73. /* kelompok operasi lain */
  74.  
  75. garis g_mirrorof(garis l,boolean sbx,boolean sby);
  76. /* menghasilkan salinan l yang dicerminkan */
  77. /* tergantung nilai sbx dan sby */
  78. /* jika sbx bernilai true, maka dicerminkan terhadap sb x */
  79. /* jika sby bernilai true, maka dicerminkan terhadap sb y */
  80.  
  81. float panjanggaris(garis l);
  82. /* menghitung panjang garis l */
  83.  
  84. float arahgaris(garis l);
  85. /* menghitung arah dari garis l*/
  86. /* yaitu sudut yang dibentuk dengan sumbu x */
  87.  
  88. float sudutgaris(garis l1, garis l2);
  89. /* menghasilkan sudut perpotongan antara l1 dengan l2 */
  90. /* precondition : l1 tidak sejajar dg l2 dan tidak berimpit dg l2 */
  91.  
  92. void gesergaris(garis *l,int deltax,int deltay);
  93. /*I.S : l terdefinisi */
  94. /*F.S : l digeser sebesar deltax dan ordinatnya sebesar delta y*/
  95. /*paw dan pakh digeser*/
  96.  
  97. void mirrorgaris(garis *l,boolean sbx,boolean sby);
  98. /* I.S : l terdefinisi */
  99. /* F.S : l dicerminkan tergantung nilai sbx atau sby */
  100. /* jika sbx true maka dicerminkan thd sumbu x */
  101. /* jika sby true maka dicerminkan thd sumbu y */
  102.  
  103. void g_putar(garis *l,float sudut);
  104. /* I.S : l terdefinisi */
  105. /* F.S : l diputar sebesar sudut derajat : paw dan pakh diputar */
  106.  
  107. #endif
  108.  

Leave a comment