есть массив точек:
131.3501953124999;98.09848327636718
351.56513671875;160.1085144042969
369.4712402343751;117.0934692382812
245.4761718749999;264.2236938476563
207.148388671875;162.0763122558594
261.3522216796876;183.705517578125
296.883544921875;233.283154296875
334.402587890625;19.06053161621094
и одна главная точка, такая же как все остальные, но не хаотично, а от управления, но всё что от неё есть, так это такие же координаты как и у остальных
264.9369140624999;238.6353637695312
Add(MainForm,2953706,21,105)
{
Width=671
Height=446
}
Add(PaintBox,16296757,231,217)
{
Width=655
Height=408
Align=5
Color=16777215
TabOrder=1
ClearBeforeDraw=0
Point(onMouseWheel)
Point(onMouseMove)
Point(onMouseDown)
Point(MouseX)
Point(MouseY)
link(onBeforeDraw,3450544:doEvent1,[])
}
Add(Img_Point,9351544,826,357)
{
Color=16711680
Size=3
Point(X)
Point(Y)
link(Bitmap,3013644:getVar,[])
link(X,7956951:Part1,[(839,345)(804,345)(804,401)(769,401)])
link(Y,7956951:Part2,[(846,345)(811,345)(811,401)(776,401)])
}
Add(Math,5147421,420,203)
{
Op2=2
Default=250
link(onResult,6669566:doWork2,[])
link(Op1,854946:Var2,[])
}
Add(Memory,9756808,483,203)
{
Default=Integer(0)
MakeExt(Default,,Y)
AddHint(1,-21,21,13,Default)
}
Add(Math,16455664,406,238)
{
OpType=1
Op2=2
Default=250
link(onResult,6669566:doWork3,[(464,244)])
link(Op1,854946:Var1,[(412,189)])
}
Add(Keyboard,6864804,322,231)
{
Key=68
link(onReadKey,1318274:doEvent,[])
}
Add(IndexToChanel,1318274,364,231)
{
link(onEvent2,16455664:doOperation,[])
}
Add(Keyboard,2734219,322,196)
{
Key=65
link(onReadKey,14052412:doEvent,[])
}
Add(IndexToChanel,14052412,364,196)
{
link(onEvent2,5147421:doOperation,[])
}
Add(Keyboard,9264453,322,154)
{
Key=87
link(onReadKey,7965526:doEvent,[])
}
Add(IndexToChanel,7965526,364,154)
{
link(onEvent2,8415989:doCalc,[])
}
Add(Hub,3450544,273,217)
{
OutCount=6
link(onEvent1,9264453:doReadKey,[(297,223)(297,160)])
link(onEvent2,2734219:doReadKey,[(305,230)(305,202)])
link(onEvent3,6864804:doReadKey,[])
link(onEvent4,7645734:doSetTransform,[(316,244)(316,363)])
link(onEvent5,7645734:doResetTransform,[(305,251)(305,370)])
}
Add(Img_UseOffset,6583126,574,203)
{
X=-350
Y=-200
link(X,8415989:Result,[])
link(Y,11955774:Result,[(594,198)(629,198)])
}
Add(Img_UseRotate,8859586,476,252)
{
Angle=0
link(Angle,14427750:Var2,[])
}
Add(Img_Point,11768602,532,364)
{
X=350
Y=200
Color=16711935
Size=5
Point(X)
Point(Y)
link(onDraw,4487587:doDraw,[])
link(Bitmap,16505516:getVar,[])
}
Add(LineBreakEx,16505516,532,329)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,2483627,231,266)
{
Caption="bmp"
Type=3
link(_Data,16296757:Bitmap,[])
}
Add(LineBreakEx,124505,448,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,2075203,406,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,3231849,364,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,3013644,826,308)
{
Caption="bmp"
Type=2
}
Add(Img_Line,1128388,406,357)
{
Point1=-1000
Point2=1000
LineStyle=2
link(onDraw,10826445:doDraw,[])
link(Bitmap,2075203:getVar,[])
}
Add(Img_Line,10826445,448,357)
{
Point1=-65536000
Point2=65536000
LineStyle=2
link(onDraw,10774283:doSetTransform,[])
link(Bitmap,124505:getVar,[])
}
Add(Img_Text,623198,364,357)
{
X=-6
Y=-120
Font=[MS Sans Serif,12,1,0,1]
Text="N"
link(onDraw,1128388:doDraw,[])
link(Bitmap,3231849:getVar,[])
}
Add(Img_SetTransform,7645734,322,357)
{
Point2=26215100
link(onSetTransform,623198:doDraw,[])
link(onResetTransform,10774283:doResetTransform,[])
link(Bitmap,14303955:getVar,[])
link(Transform,8859586:Transform,[(349,295)(482,295)])
}
Add(LineBreakEx,14303955,322,322)
{
Caption="bmp"
Type=2
}
Add(Img_SetTransform,10774283,490,357)
{
Point2=26215100
link(onSetTransform,9786009:doEnum,[])
link(onResetTransform,11768602:doDraw,[])
link(Bitmap,4929607:getVar,[])
link(Transform,15911165:Transform,[(517,296)(580,296)])
}
Add(LineBreakEx,4929607,490,322)
{
Caption="bmp"
Type=2
}
Add(Img_UseRotate,15911165,574,252)
{
Angle=0
link(AddTransform,6583126:Transform,[])
link(Angle,14241382:Var3,[(587,243)])
}
Add(MathParse,8415989,581,161)
{
DataCount=1
MathStr="2 * sin (%1/180*pi) + %0"
Default=-350
link(onResult,11955774:doCalc,[])
link(X1,9143755:Var2,[])
}
Add(MathParse,11955774,623,161)
{
DataCount=1
MathStr="2 * cos (%1/180*pi) + %0"
Default=-200
link(X1,9143755:Var3,[(629,149)])
}
Add(HubEx,6669566,460,203)
{
link(onEvent,9756808:doValue,[])
}
Add(GetDataEx,14427750,483,238)
{
link(Data,9756808:Value,[])
}
Add(GetDataEx,854946,420,184)
{
Angle=1
link(Data,14427750:Var1,[(471,189)(471,243)])
}
Add(GetDataEx,9143755,581,144)
{
Angle=3
link(Data,14241382:Var1,[(538,149)])
}
Add(GetDataEx,14241382,532,238)
{
Angle=3
link(Data,14427750:Var3,[])
}
Add(LineBreakEx,4146830,574,329)
{
Caption="bmp"
Type=2
}
Add(Img_Text,4487587,574,364)
{
X=342
Y=180
Font=[Wingdings 3,22,0,16711935,2]
Text="h"
link(Bitmap,4146830:getVar,[])
}
Add(Timer,9568122,189,217)
{
Interval=33
link(onTimer,16296757:doRefresh,[])
}
Add(ArrayEnum,9786009,707,357)
{
link(onItem,7956951:doSplit,[])
link(Array,16380:Array,[(713,306)(720,306)])
}
Add(MultiStrPart,7956951,763,357)
{
link(onSplit,9351544:doDraw,[])
}
Add(StrList,16380,700,210)
{
Strings=#35:131.3501953124999;98.09848327636718|33:351.56513671875;160.1085144042969|35:369.4712402343751;117.0934692382812|35:245.4761718749999;264.2236938476563|34:207.148388671875;162.0763122558594|34:261.3522216796876;183.705517578125|33:296.883544921875;233.283154296875|34:334.402587890625;19.06053161621094|
}
Add(VisualStrings,13415332,336,490)
{
@Hint=#14:та самая точка|
Lines=#35:264.9369140624999;238.6353637695312|
Width=263
AddHint(146,-53,92,13,@Hint)
}
суть в том, что исходя из координат этой единственной точки, от её направления движения(направление берётся из 2-х точек, это текущая координата точки и следующая куда точка сдвинется за промежуток времени 33мс, это и будет вектор направления движения), должен происходить поворот всего поля
как это сделать даже не предполагаю