Blog Home | marisi @ cxx0 | dotbtk.org

Eau de WC-lette

Toilet Perfume from Hell!


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

Profile

About Me

My Photo
Name: marisi
Location: Indonesia

View my complete profile



Previous Post

  • Rod Stewart - Have You Ever Seen The Rain ("CCR - ...
  • Tolu Hali Diribak Hamu Rohangki
  • Toto - I Will Remember
  • Survivor - Eye of The Tiger
  • Buku-buku Baru
  • The Temper Trap - Sweet Disposition
  • Jeff Beck - Little Wing (Jimi Hendrix - Little Win...
  • Food Stamps Politic
  • O' Holy Night - Camille and Kennerly
  • Selamat Hari Natal


Fave Links

  • rotten dot com


Friends/Links

  • Duaon Simandalahi


Archives

  • May 2006
  • June 2006
  • July 2006
  • August 2006
  • September 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • April 2010
  • July 2010
  • August 2010
  • November 2010
  • December 2010
  • November 2011
  • December 2011
  • January 2012


Miscs

Follow marisitorus on Twitter

Credits

  • Blogger.com
  • Simple-Blogskins
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789-=\!@#$%^&*()_+|[]{};':",./<>?`~