Skip to content

Instantly share code, notes, and snippets.

@ilkermanap
Created March 7, 2020 21:59
Show Gist options
  • Save ilkermanap/e71cbc6876d834a2e2f3ea1866b79284 to your computer and use it in GitHub Desktop.
Save ilkermanap/e71cbc6876d834a2e2f3ea1866b79284 to your computer and use it in GitHub Desktop.
kesisen iki cember icin, ara bolgede kalan tamsayi noktalarin bulunmasi
import math
class Nokta:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"({self.x},{self.y})"
class Cizgi:
def __init__(self, n1, n2):
self.n1 = n1
self.n2 = n2
def uzunluk(self):
dx = self.n1.x - self.n2.x
dy = self.n1.y - self.n2.y
return math.sqrt( (dx ** 2) + (dy ** 2))
class Cember:
def __init__(self, merkez, R):
self.merkez = merkez
self.R = R
def kare(self):
n1 = Nokta(self.merkez.x - self.R, self.merkez.y - self.R)
n2 = Nokta(self.merkez.x + self.R, self.merkez.y + self.R)
return (n1,n2)
def icindemi(self, nokta): # cember uzerinde olanlari da icinde kabul ettik
c = Cizgi(self.merkez, nokta)
if c.uzunluk() > self.R:
return False
return True
if __name__ == "__main__":
cember1 = Cember(Nokta(3,0),3) # 3,0 noktasinda merkezi olan 3cm yaricapli cember
cember2 = Cember(Nokta(5,0),5) # 5,0 noktasinda merkezi olan 5cm yaricapli cember
sonuc = []
n1, n2 = cember2.kare()
for y in range(n1.y, n2.y+1):
for x in range(n1.x, n2.x+1):
n = Nokta(x,y)
if (cember1.icindemi(n) == False):
if (cember2.icindemi(n) == True):
sonuc.append(n)
print(n)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment