- # 三角
- def TriangleArea(x1,y1, x2,y2, x3,y3)
- return ((x1 * y2 + x2 * y3 + x3 * y1 - x2 * y1 - x3 * y2 - x1 * y3) / 2.0).abs
- end
- x1,y1,x2,y2,x3,y3 = 100,100,50,200,150,200
- x,y = 100,150
- t = TriangleArea(x1, y1, x2, y2, x3, y3)
- a = TriangleArea(x1, y1, x2, y2, x, y) +
- TriangleArea(x1, y1, x, y, x3, y3) +
- TriangleArea(x, y, x2, y2, x3, y3)
- if (t - a).abs <= 0.01
- p 'in_triangle'
- end
- # 矩形
- rect = Rect.new(100,100,100,100)
- x,y = 150,150
- if x.between?(rect.x, rect.x+rect.width) and
- y.between?(rect.y, rect.y+rect.height)
- p 'in_rect'
- end
- # 圆
- rx,ry,rd = 100,100,50
- x,y = 120,120
- if ((x-rx).abs ** 2 + (y-ry).abs ** 2) ** 0.5 <= rd
- p 'in_circle'
- end
复制代码 |