commit 27706d6c0c2f034dd2eb444e445d362624ca657c Author: 202410715044 ADLANTHORIQ SYAHPUTRA S <202410715044@mhs.ubharajaya.ac.id> Date: Sun May 11 18:06:46 2025 +0700 Upload files to "/" diff --git a/Punya_adlan_Titik Dalam Segiempat.py b/Punya_adlan_Titik Dalam Segiempat.py new file mode 100644 index 0000000..d541078 --- /dev/null +++ b/Punya_adlan_Titik Dalam Segiempat.py @@ -0,0 +1,54 @@ + +import winsound + +frequency = 2500 +duration = 1000 +winsound.Beep(frequency, duration) +print('Created by adlan') +print('') + +def is_point_in_polygon(x, y, polygon): + n = len(polygon) + inside = False + px, py = x, y + + for i in range(n): + j = (i + 1) % n + xi, yi = polygon[i] + xj, yj = polygon[j] + + intersect = ((yi > py) != (yj > py)) and \ + (px < (xj - xi) * (py - yi) / ((yj - yi) + 1e-10) + xi) + if intersect: + inside = not inside + + return inside + +def process_input(data_lines): + results = [] + for line in data_lines: + + line = line.replace(",", " ") + nums = list(map(float, line.strip().split())) + + + zx, zy = nums[0], nums[1] + + + polygon = [(nums[i], nums[i+1]) for i in range(2, len(nums), 2)] + + if is_point_in_polygon(zx, zy, polygon): + results.append("YA") + else: + results.append("TIDAK") + return results + +data_input = [ + "1,1 2,2 4,2 4,4 2,4", + "0,0 0,5 8,5 8,0 0,0", + "0,0 0,5 8,5 8,0 0,0" +] + +hasil = process_input(data_input) +for i, res in enumerate(hasil, 1): + print(f"h#{i}: {res}") diff --git a/README.md b/README.md new file mode 100644 index 0000000..27b9232 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ + +# Titik Dalam Segiempat + +Program ini digunakan untuk menentukan apakah suatu titik berada **di dalam** atau **di luar** segiempat pada bidang koordinat 2 dimensi. + +## Penjelasan Singkat + +Sebuah segiempat dapat dinyatakan dengan 4 buah titik sudut. Diberikan satu titik lain (misalnya titik Z), kita ingin mengetahui apakah titik Z ini terletak di dalam segiempat yang dibentuk oleh keempat titik tersebut. + +Metode yang digunakan adalah algoritma **Ray Casting**, yang umum dipakai untuk menentukan apakah sebuah titik berada di dalam poligon tertutup. + +## Cara Kerja Program + +- Input: 5 pasang koordinat (1 untuk titik Z, 4 untuk titik sudut segiempat). +- Output: "YA" jika titik Z berada di dalam segiempat, "TIDAK" jika berada di luar. +- Format Input: `Zx,Zy Ax,Ay Bx,By Cx,Cy Dx,Dy` + +Contoh: +``` +1,1 2,2 4,2 4,4 2,4 -> TIDAK +0,0 0,5 8,5 8,0 0,0 -> YA +-1,-1 0,0 -9,-9 -9,-9 -9,-9 -> YA +``` + +## Kesimpulan + +Program ini bermanfaat untuk berbagai aplikasi geospasial, simulasi komputer, dan grafika, terutama untuk: +- Deteksi lokasi objek dalam batas area tertentu. +- Validasi input pengguna dalam bentuk koordinat. +- Pengolahan data spasial di GIS. + +## Contoh Penerapan + +- Menentukan apakah koordinat GPS berada dalam batas wilayah tertentu. +- Memeriksa apakah klik mouse terjadi di dalam tombol atau area gambar. +- Digunakan dalam game development untuk deteksi area aktif. +