class Vector2d(object): def __init__(self): self.x_ = 0 self.y_ = 0 def CrossProduct(self, vector): return self.x_ * vector.y_ - self.y_ * vector.x_ def Minus(self, vector): ans = Vector2d() ans.x_ = self.x_ - vector.x_ ans.y_ = self.y_ - vector.y_ return ans class Triangle(object): def __init__(self): self.pointA_ = Vector2d() self.pointB_ = Vector2d() self.pointC_ = Vector2d() def isInTriangle(self, target): PA = self.pointA_.Minus(target) PB = self.pointB_.Minus(target) PC = self.pointC_.Minus(target) t1 = PA.CrossProduct(PB) t2 = PB.CrossProduct(PC) t3 = PC.CrossProduct(PA) return t1 * t2 >= 0 and t1 * t3 >= 0 def test(): triangle = Triangle() triangle.pointA_.x_ = 240 triangle.pointA_.y_ = 175 triangle.pointB_.x_ = 160 triangle.pointB_.y_ = 250 triangle.pointC_.x_ = 320 triangle.pointC_.y_ = 250 point = Vector2d() point.x_ = 290 point.y_ = 300 print(triangle.isInTrangle(point))