Вот реализация с поворотом точки
. Работает просто идеально.
Graphics 800,600,32,2
SetBuffer BackBuffer()
Local x=50,y=50,width=500,height=100,ang#=10
Repeat
Cls
DrawRect(x,y,width,height,ang)
Text 0,0,PointInRect(x,y,width,height,ang,MouseX(),Mous
eY())
Flip
Until KeyDown(1)
Function DrawRect(x#,y#,width#,height#,ang#=0)
Local x1#=x +width *Cos(ang)
Local y1#=y +width *Sin(ang)
Local x2#=x +height*Cos(ang+90)
Local y2#=y +height*Sin(ang+90)
Local x3#=x2+width *Cos(ang)
Local y3#=y2+width *Sin(ang)
Line x,y,x1,y1
Line x,y,x2,y2
Line x1,y1,x3,y3
Line x2,y2,x3,y3
End Function
Function PointInRect(x#,y#,width#,height#,ang#,px#,py#)
Local l#=Sqr((px-x)^2+(py-y)^2)
Local ang2#=ATan2(py-y,px-x)
Local px2#=x+l*Cos(ang2-ang)
Local py2#=y+l*Sin(ang2-ang)
If (px2>x+width) Or (px2<x) Or (py2>y+height) Or (py2<y) Then
Return False
Else
Return True
EndIf
End Function
З.Ы. Спасибо Frank за идею.