Sunday, November 27, 2011
Balada Sebuah Titik Dalam Segitiga
Waktu itu sekitar tahun 2010. Ada sebuah pertanyaan menarik: "Apakah titik tertentu itu terletak dalam sebuah Segitiga atau tidak?".
Dulu ngejawabnya pakai Java. Mumpung lagi sedikit mencoba belajar Python, ada baiknya mencoba untuk diketik dalam Python. Karena baru newbie, mohon dimaafkan kalau ada yang salah atau tidak sesuai standard :-D
#!/opt/sw/bin/python
class Point2D(object):
def __init__(self, x, y):
self.x = float(x)
self.y = float(y)
class TestTriangle(object):
def __init__(self, pA, pB, pC):
self.pA = pA
self.pB = pB
self.pC = pC
def _area2D(self, pA, pB, pC):
return (((pA.x - pC.x) * (pB.y - pC.y)) - \
((pA.y - pC.y) * (pB.x - pC.x)))
def isPointInsideTriangle(self, point):
return (
self._area2D(self.pA, self.pB, point) \
* self._area2D(self.pC, self.pA, point) >= 0 and \
self._area2D(self.pC, self.pA, point) \
* self._area2D(self.pB, self.pC, point) >= 0 and \
self._area2D(self.pB, self.pC, point) \
* self._area2D(self.pA, self.pB, point) >= 0
)
if __name__ == "__main__":
point_a = Point2D(-0.9, 0.9)
point_b = Point2D(9.9, -0.9)
point_c = Point2D(-0.9, 9.9)
test_point = Point2D(0.999, 1.99919)
triangle = TestTriangle(point_a, point_b, point_c)
if triangle.isPointInsideTriangle(test_point):
print 'Yes! Test Point({},{}) is inside Triangle[A({}, \
{}), B({}, {}) and C({}, {})]'.format(test_point.x, test_point.y,\
point_a.x, point_a.y, point_b.x, point_b.y, point_c.x, point_c.y)
else:
print 'Nope! The Triangle is too sexy for that Point!'
Untuk teori seputar segitiga bermuda, ada banyak kok di Internet. Karena memang tujuannya bukan untuk menulis teori seputar segitiga bermuda. Selain itu, bukan segitiga bermuda yang sedang dimaksud dalam tulisan ini.
Labels: howto, nggakjelas, python
posted by: marisi @ 3:19 AM


<< Home