Вверх ↑
Ответов: 2200
Рейтинг: 673
#1: 2020-07-22 12:53:18 ЛС | профиль | цитата
Rysik, вот вам эта сложная формула atan(x1 - x2, y1 - y2) по определению угла между двумя точками:

Вот как ее использовать для определения угла между двумя точками:

Add(MainForm,2953706,623,350)
{
Width=612
Height=644
Position=1
}
Add(Img_Point,8729249,308,350)
{
Color=255
Size=5
Point(X)
Point(Y)
link(onDraw,13168843:doDraw,[])
link(Bitmap,7790025:Var2,[])
link(X,13216144:getVar,[])
link(Y,7405531:getVar,[])
}
Add(Img_Point,12437351,483,350)
{
Color=65280
Size=5
Point(X)
Point(Y)
link(onDraw,6359882:doCalc,[])
link(Bitmap,13855645:Var3,[(489,250)])
link(X,13936630:getVar,[])
link(Y,11951026:getVar,[])
}
Add(Img_Line,13168843,364,350)
{
LineStyle=2
Point(Point1)
Point(Point2)
link(onDraw,12437351:doDraw,[])
link(Bitmap,13855645:Var2,[])
link(Point1,4617187:Point,[])
link(Point2,7282636:Point,[(384,342)(426,342)])
}
Add(PaintBox,10098511,308,119)
{
Width=600
Height=600
ClearBeforeDraw=0
Point(onMouseMove)
Point(MouseX)
Point(MouseY)
link(onBeforeDraw,8729249:doDraw,[(352,125)(352,109)(282,109)(282,356)])
link(onMouseMove,13339577:doValue,[(352,132)(352,156)(303,156)(303,181)])
}
Add(GetDataEx,7790025,308,245)
{
link(Data,10098511:Bitmap,[])
}
Add(GetDataEx,13855645,364,245)
{
Angle=3
link(Data,7790025:Var3,[])
}
Add(MathParse,6359882,546,350)
{
DataCount=4
MathStr="atan (%2 - %1, %4 - %3)"
AngleMode=1
link(onResult,2953706:doCaption,[])
link(X1,938584:getVar,[])
link(X2,5915321:getVar,[])
link(X3,5082850:getVar,[])
link(X4,7532447:getVar,[])
}
Add(Memory,15819785,560,112)
{
Default=Integer(300)
AddHint(-6,-18,33,13,Default)
}
Add(Memory,10636918,616,112)
{
Default=Integer(300)
AddHint(-4,-18,33,13,Default)
}
Add(LineBreakEx,11109437,560,161)
{
Caption="oldX"
Type=3
link(_Data,15819785:Value,[])
}
Add(LineBreakEx,2312529,616,161)
{
Caption="oldY"
Type=3
link(_Data,10636918:Value,[])
}
Add(Memory,13339577,315,175)
{
Point(Data)
link(onData,12580057:doValue,[])
link(Data,10098511:MouseX,[])
}
Add(Memory,12580057,371,175)
{
Point(Data)
link(onData,10098511:doRefresh,[(429,181)(429,239)(296,239)(296,125)])
link(Data,10098511:MouseY,[(377,163)(328,163)])
}
Add(LineBreakEx,8119257,315,217)
{
Caption="newX"
Type=3
link(_Data,13339577:Value,[])
}
Add(LineBreakEx,5014989,371,217)
{
Caption=" newY"
Type=3
link(_Data,12580057:Value,[])
}
Add(LineBreakEx,938584,546,280)
{
Caption="oldX"
Type=2
}
Add(LineBreakEx,5082850,560,308)
{
Caption="oldY"
Type=2
}
Add(LineBreakEx,5915321,553,294)
{
Caption="newX"
Type=2
}
Add(LineBreakEx,7532447,567,322)
{
Caption=" newY"
Type=2
}
Add(LineBreakEx,13216144,315,294)
{
Caption="oldX"
Type=2
}
Add(LineBreakEx,7405531,322,308)
{
Caption="oldY"
Type=2
}
Add(LineBreakEx,13936630,490,308)
{
Caption="newX"
Type=2
}
Add(LineBreakEx,11951026,497,322)
{
Caption=" newY"
Type=2
}
Add(PointXY,4617187,371,301)
{
link(X,881996:getVar,[])
link(Y,12964497:getVar,[])
}
Add(PointXY,7282636,420,301)
{
link(X,4992449:getVar,[])
link(Y,12054997:getVar,[])
}
Add(LineBreakEx,881996,371,259)
{
Caption="oldX"
Type=2
}
Add(LineBreakEx,12964497,378,273)
{
Caption="oldY"
Type=2
}
Add(LineBreakEx,4992449,420,259)
{
Caption="newX"
Type=2
}
Add(LineBreakEx,12054997,427,273)
{
Caption=" newY"
Type=2
}
Обратите внимание что у MathParse в свойстве AngleMode = Градусы (по умолчанию Радианы).
карма: 11

0