Gitarist писал(а):
Это всё так контрастирует на фоне этой фразы: sla8a писал(а):
потратили не больше пяти минут1. Вводим в поисковик: "позиция центра окружности по двум точкам и радиусу".
2. На первой странице получаем ответ: https://www.cyberforum.ru/vba/thread1796207.html.
3. Все необходимое и рисунок и расчеты:
4. Вставляем в схему. Вот если на этом этапе возникли вопросы, тогда и понадобилась бы помощь форума.
Схема
Add(MainForm,16297664,77,336)
{
Width=687
Height=541
Position=1
}
Add(Img_Arc,8255685,427,497)
{
Point2AsOffset=0
Size=3
Point(Point1)
Point(Point2)
Point(Point3)
Point(Point4)
Point(doDirection)
link(onDraw,15251476:doDraw,[])
link(Bitmap,11805101:getVar,[(433,479)(391,479)])
link(Point1,4619322:Var2,[])
link(Point2,7960578:Var2,[])
link(Point3,2063720:Point,[])
link(Point4,12049784:Point,[])
}
Add(PaintBox,880944,308,224)
{
Left=40
Top=110
Width=600
Height=300
Color=16777215
ClearBeforeDraw=0
link(onBeforeDraw,9230487:doCalc,[])
}
Add(Edit,5113297,77,224)
{
Left=45
Top=45
Text="100"
link(onChange,8919054:doWork2,[])
}
Add(Edit,9314071,119,238)
{
Left=120
Top=45
Text="100"
link(onChange,12839978:doWork2,[])
}
Add(Edit,6904018,161,252)
{
Left=245
Top=45
Text="200"
link(onChange,528179:doWork2,[])
}
Add(Edit,13102730,203,266)
{
Left=315
Top=45
Text="100"
link(onChange,13288155:doWork2,[])
}
Add(PointXY,2063720,455,371)
{
link(X,3300599:getVar,[])
link(Y,15005020:getVar,[])
}
Add(HubEx,8919054,280,224)
{
link(onEvent,880944:doRefresh,[])
}
Add(HubEx,12839978,280,238)
{
Angle=3
link(onEvent,8919054:doWork3,[])
}
Add(HubEx,528179,280,252)
{
Angle=3
link(onEvent,12839978:doWork3,[])
}
Add(HubEx,13288155,280,266)
{
Angle=3
link(onEvent,528179:doWork3,[])
}
Add(Img_Rectangle,15251476,497,497)
{
Point2AsOffset=0
LineStyle=2
Point(Point1)
Point(Point2)
link(onDraw,14977473:doDraw,[])
link(Bitmap,3596754:getVar,[])
link(Point1,4619322:Var3,[(517,485)])
link(Point2,7960578:Var3,[(524,466)])
}
Add(Edit,16653976,245,280)
{
Left=434
Top=44
Text="60"
link(onChange,13288155:doWork3,[(284,286)])
}
Add(Img_Point,3910897,595,497)
{
Color=32768
Size=3
Point(X)
Point(Y)
link(onDraw,7167075:doDraw,[])
link(Bitmap,7743151:getVar,[])
link(X,10233706:getVar,[])
link(Y,15162992:getVar,[])
}
Add(Img_Point,7167075,651,497)
{
Color=255
Size=3
Point(X)
Point(Y)
link(Bitmap,11860968:getVar,[])
link(X,13983617:getVar,[])
link(Y,1759900:getVar,[])
}
Add(PointXY,12049784,462,448)
{
link(X,7833215:getVar,[])
link(Y,2165680:getVar,[])
}
Add(Img_Point,14977473,546,497)
{
Color=8388736
Size=3
Point(X)
Point(Y)
link(onDraw,3910897:doDraw,[])
link(Bitmap,10981796:getVar,[])
link(X,6463125:Var2,[])
link(Y,1453321:Var1,[(566,278)])
}
Add(MathParse,13714762,490,224)
{
MathStr="sqrt(sqr(%2) - sqr(%1 / 2))"
link(onResult,7520816:doCalc,[])
link(X1,16356677:Var2,[])
link(X2,13202318:getVar,[])
}
Add(MathParse,7520816,553,224)
{
DataCount=6
MathStr="%1 + (%2 - %1)/2 + %5 * (%4 - %3) / %6"
Point(doMathStr)
link(onResult,9757581:doCalc,[])
link(X1,7118581:getVar,[])
link(X2,5412053:getVar,[])
link(X3,299756:getVar,[])
link(X4,4213986:getVar,[])
link(X5,13217560:Var2,[])
link(X6,6056137:Var2,[])
}
Add(MathParse,9757581,623,224)
{
DataCount=6
MathStr="%3 + (%4 - %3)/2 - %5 * (%2 - %1) / %6"
Point(doMathStr)
link(onResult,8513123:doOperation,[])
link(X1,2347075:getVar,[])
link(X2,2234635:getVar,[])
link(X3,13282408:getVar,[])
link(X4,8594046:getVar,[])
link(X5,13217560:Var3,[(657,205)])
link(X6,6056137:Var3,[(664,212)])
}
Add(LineBreakEx,6567920,77,273)
{
Caption="x1"
Type=3
link(_Data,5113297:Text,[])
}
Add(LineBreakEx,14106423,161,301)
{
Caption="x2"
Type=3
link(_Data,6904018:Text,[])
}
Add(LineBreakEx,3615278,119,287)
{
Caption="y1"
Type=3
link(_Data,9314071:Text,[])
}
Add(LineBreakEx,12513766,203,308)
{
Caption="y2"
Type=3
link(_Data,13102730:Text,[])
}
Add(LineBreakEx,285935,245,322)
{
Caption="r"
Type=3
link(_Data,16653976:Text,[])
}
Add(LineBreakEx,3300599,455,329)
{
Caption="x1"
Type=2
}
Add(LineBreakEx,7833215,462,406)
{
Caption="x2"
Type=2
}
Add(LineBreakEx,15005020,462,343)
{
Caption="y1"
Type=2
}
Add(LineBreakEx,2165680,469,420)
{
Caption="y2"
Type=2
}
Add(LineBreakEx,10233706,602,455)
{
Caption="x1"
Type=2
}
Add(LineBreakEx,15162992,609,469)
{
Caption="y1"
Type=2
}
Add(LineBreakEx,13983617,658,455)
{
Caption="x2"
Type=2
}
Add(LineBreakEx,1759900,665,469)
{
Caption="y2"
Type=2
}
Add(LineBreakEx,7118581,553,140)
{
Caption="x1"
Type=2
}
Add(LineBreakEx,5412053,560,154)
{
Caption="x2"
Type=2
}
Add(LineBreakEx,299756,567,168)
{
Caption="y1"
Type=2
}
Add(LineBreakEx,4213986,574,182)
{
Caption="y2"
Type=2
}
Add(LineBreakEx,2347075,623,140)
{
Caption="x1"
Type=2
}
Add(LineBreakEx,2234635,630,154)
{
Caption="x2"
Type=2
}
Add(LineBreakEx,13282408,637,168)
{
Caption="y1"
Type=2
}
Add(LineBreakEx,8594046,644,182)
{
Caption="y2"
Type=2
}
Add(GetDataEx,13217560,581,200)
{
Angle=3
link(Data,13714762:Result,[(540,205)(540,268)(496,268)])
}
Add(GetDataEx,4619322,441,480)
{
Angle=3
link(Data,14588321:Point,[(438,485)(438,314)(706,314)])
}
Add(GetDataEx,7960578,448,461)
{
Angle=3
link(Data,12541359:Point,[(445,466)(445,323)(790,323)])
}
Add(PointXY,12541359,784,273)
{
link(X,10044231:Var2,[])
link(Y,10044231:Var3,[(797,264)])
}
Add(Math,1796089,784,224)
{
OpType=2
Op2=2
link(onResult,8255685:doDraw,[(838,230)(838,538)(417,538)(417,503)])
link(Op1,15610399:getVar,[])
}
Add(LineBreakEx,15610399,784,196)
{
Caption="r"
Type=2
}
Add(Math,8513123,700,224)
{
OpType=1
Op2=2
link(onResult,7698133:doOperation,[])
link(Op1,6463125:Var3,[(706,203)(684,203)(684,271)])
link(Op2,5121774:getVar,[])
}
Add(GetDataEx,10044231,784,259)
{
link(Data,1796089:Result,[])
}
Add(PointXY,14588321,700,273)
{
link(X,8513123:Result,[])
link(Y,7698133:Result,[(713,265)(748,265)])
}
Add(Math,7698133,742,224)
{
OpType=1
Op2=2
link(onResult,1796089:doOperation,[])
link(Op1,1453321:Var3,[(748,190)(692,190)(692,278)])
link(Op2,10779681:getVar,[])
}
Add(LineBreakEx,10779681,749,196)
{
Caption="r"
Type=2
}
Add(LineBreakEx,5121774,707,196)
{
Caption="r"
Type=2
}
Add(GetDataEx,6463125,553,266)
{
link(Data,7520816:Result,[])
}
Add(GetDataEx,1453321,623,273)
{
link(Data,9757581:Result,[])
}
Add(MathParse,9230487,350,224)
{
DataCount=4
MathStr="sqrt((%1-%2) * (%1-%2) + (%3-%4) * (%3-%4))"
link(onResult,13272551:doOperation,[])
link(X1,11566714:getVar,[])
link(X2,2880125:getVar,[])
link(X3,4691825:getVar,[])
link(X4,6505638:getVar,[])
}
Add(LineBreakEx,11566714,350,126)
{
Caption="x1"
Type=2
}
Add(LineBreakEx,2880125,357,140)
{
Caption="x2"
Type=2
}
Add(LineBreakEx,4691825,364,154)
{
Caption="y1"
Type=2
}
Add(LineBreakEx,6505638,371,168)
{
Caption="y2"
Type=2
}
Add(LineBreakEx,13202318,497,189)
{
Caption="r"
Type=2
}
Add(LineBreakEx,11860968,651,441)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,7743151,595,441)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,10981796,546,455)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,3596754,497,448)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,11805101,385,448)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,7314358,308,266)
{
Caption="bmp"
Type=3
link(_Data,880944:Bitmap,[])
}
Add(If_else,16004022,441,224)
{
Type=4
link(onTrue,13714762:doCalc,[])
link(onFalse,5840770:doDraw,[(479,237)(479,153)])
link(Op2,6253326:Var2,[])
}
Add(LineBreakEx,3442907,399,196)
{
Caption="r"
Type=2
}
Add(Math,13272551,399,224)
{
OpType=2
Op2=2
link(onResult,16004022:doCompare,[])
link(Op1,3442907:getVar,[])
AddHint(23,-50,30,13,Op2)
}
Add(LineBreakEx,11565827,497,119)
{
Caption="bmp"
Type=2
}
Add(Img_TextInRect,5840770,497,147)
{
Point1=65537
Point2=19661400
Font=[MS Sans Serif,14,1,0,1]
Text="Радиус меньше половины расстояния"
AlignHorizon=2
Alignvertical=2
link(Bitmap,11565827:getVar,[])
}
Add(CheckBox,15798334,210,77)
{
Left=500
Top=45
Width=80
Caption="pos1 / pos2"
link(onCheck,16584810:doEvent1,[])
}
Add(StrList,9664319,455,49)
{
Strings=#77:%1 + (%2 - %1)/2 + %5 * (%4 - %3) / %6|%3 + (%4 - %3)/2 - %5 * (%2 - %1) / %6|77:%1 + (%2 - %1)/2 - %5 * (%4 - %3) / %6|%3 + (%4 - %3)/2 + %5 * (%2 - %1) / %6|
Point(doGetString)
Point(onGetString)
link(onGetString,2902760:doSplit,[])
}
Add(StrPart,2902760,497,56)
{
Char="|"
link(onSplit,9757581:doMathStr,[(617,62)(617,237)])
link(onPart,7520816:doMathStr,[(545,69)(545,237)])
}
Add(Hub,16584810,252,77)
{
link(onEvent1,9664319:doGetString,[])
link(onEvent2,7489636:doWork1,[(284,90)])
}
Add(CheckBox,4312292,210,126)
{
Left=595
Top=45
Caption="<-- / -->"
link(onCheck,2043590:doEvent1,[])
}
Add(Hub,2043590,252,126)
{
link(onEvent1,8255685:doDirection,[(297,132)(297,510)])
link(onEvent2,7489636:doWork2,[])
}
Add(HubEx,7489636,280,133)
{
Angle=1
link(onEvent,8919054:doWork1,[])
}
Add(GetDataEx,6253326,448,207)
{
Angle=3
link(Data,9230487:Result,[(436,212)(436,272)(356,272)])
}
Add(GetDataEx,16356677,490,207)
{
Angle=3
link(Data,6253326:Var3,[])
}
Add(GetDataEx,6056137,588,207)
{
Angle=3
link(Data,16356677:Var3,[])
}
Gitarist, сильно сложно было найти нужную информацию? Сравните схемы.
tig-rrr, у Леонида был другой способ отрисовки дуги по точкам, в вашей схеме явный перебор.