From 27706d6c0c2f034dd2eb444e445d362624ca657c Mon Sep 17 00:00:00 2001
From: 202410715044 ADLANTHORIQ SYAHPUTRA S <202410715044@mhs.ubharajaya.ac.id>
Date: Sun, 11 May 2025 18:06:46 +0700
Subject: [PATCH] Upload files to "/"

---
 Punya_adlan_Titik Dalam Segiempat.py | 54 ++++++++++++++++++++++++++++
 README.md                            | 37 +++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100644 Punya_adlan_Titik Dalam Segiempat.py
 create mode 100644 README.md

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.
+