Upload files to "/"
This commit is contained in:
commit
27706d6c0c
54
Punya_adlan_Titik Dalam Segiempat.py
Normal file
54
Punya_adlan_Titik Dalam Segiempat.py
Normal file
@ -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}")
|
37
README.md
Normal file
37
README.md
Normal file
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user