我是这样算的
-(BOOL)DiamondContainsPoint:(CGRect)rect Point:(CGPoint)point
{
CGFloat startX = rect.origin.x;
CGFloat startY = rect.origin.y;
CGFloat width = rect.size.width;
CGFloat height = rect.size.height;
CGFloat absoluteX = point.x - startX;
CGFloat absoluteY = point.y - startY;
if (absoluteY >= ((-height/width)*absoluteX+height/2) &&
absoluteY <= ((-height/width)*absoluteX+3*height/2) &&
absoluteY <= ((height/width)*absoluteX+height/2) &&
absoluteY >= ((height/width)*absoluteX-height/2))
{
return YES;
}
return NO;
}
这样算
-(BOOL)DiamondContainsPoint:(CGRect)rect Point:(CGPoint)point
{
CGFloat startX = rect.origin.x;
CGFloat startY = rect.origin.y;
CGFloat width = rect.size.width;
CGFloat height = rect.size.height;
CGFloat absoluteX = point.x - startX;
CGFloat absoluteY = point.y - startY;
if (absoluteY >= ((-height/width)*absoluteX+height/2) &&
absoluteY <= ((-height/width)*absoluteX+3*height/2) &&
absoluteY <= ((height/width)*absoluteX+height/2) &&
absoluteY >= ((height/width)*absoluteX-height/2))
{
return YES;
}
return NO;
}
-(BOOL)DiamondContainsPoint:(CGRect)rect Point:(CGPoint)point
{
CGFloat startX = rect.origin.x;
CGFloat startY = rect.origin.y;
CGFloat width = rect.size.width;
CGFloat height = rect.size.height;
CGFloat absoluteX = point.x - startX;
CGFloat absoluteY = point.y - startY;
if (absoluteY >= ((-height/width)*absoluteX+height/2) &&
absoluteY <= ((-height/width)*absoluteX+3*height/2) &&
absoluteY <= ((height/width)*absoluteX+height/2) &&
absoluteY >= ((height/width)*absoluteX-height/2))
{
return YES;
}
return NO;
}