Вверх ↑
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
#1: 2023-03-28 03:27:14 ЛС | профиль | цитата
Может кому пригодится.


Add(Img_Point,10361775,455,315)
{
Color=-16777203
Size=10
Point(X)
Point(Y)
link(onDraw,12465343:doRefresh,[(499,321)(499,265)(443,265)(443,209)])
link(Bitmap,12465343:Bitmap,[])
link(X,14307840:Result,[(468,303)(335,303)])
link(Y,16095580:Result,[(475,303)(384,303)])
}
Add(Timer,11502362,126,329)
{
Interval=100
AutoStop=360
link(onTimer,1782630:doEvent1,[])
}
Add(Hub,1782630,210,329)
{
link(onEvent1,10043336:doNext,[(238,335)(238,384)])
}
Add(MainForm,5818658,140,161)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(PaintBox,12465343,455,203)
{
Left=55
Top=10
Width=245
Height=218
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
}
Add(MathParse,14307840,329,259)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos ((3.14 * %1 / 180))"
link(X2,9867155:Var2,[(342,229)(321,229)])
link(X3,11880627:Var2,[(349,229)(363,229)])
}
Add(CounterEx,10043336,252,378)
{
Max=359
link(onNext,8911218:doEvent1,[(292,384)(292,265)])
}
Add(For,8238168,252,322)
{
End=359
}
Add(MathParse,16095580,378,259)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin (-(3.14 * %1 / 180))"
link(X2,9867155:Var3,[(391,215)])
link(X3,11880627:Var3,[(398,222)])
}
Add(Hub,8911218,301,259)
{
OutCount=3
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(347,272)(347,265)])
link(onEvent3,10361775:doDraw,[(385,279)(385,321)])
}
Add(Memory,13135093,315,168)
{
Default=Integer(150)
}
Add(Memory,7855591,357,168)
{
Default=Integer(240)
}
Add(GetDataEx,9867155,315,210)
{
link(Data,13135093:Value,[])
}
Add(GetDataEx,11880627,357,217)
{
link(Data,7855591:Value,[])
}

карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 783
Рейтинг: 168
#2: 2023-03-28 08:11:53 ЛС | профиль | цитата
Aziz, Зачем переводить в радианы если можно сразу в градусах?

Add(Img_Point,10361775,252,203)
{
Color=-16777203
Size=10
Point(X)
Point(Y)
link(Bitmap,12465343:Bitmap,[(258,180)(125,180)])
link(X,14307840:Result,[])
link(Y,16095580:Result,[(272,184)(314,184)])
}
Add(Timer,11502362,70,140)
{
Interval=33
AutoStop=360
link(onTimer,12465343:doRefresh,[])
}
Add(MainForm,5818658,70,70)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(PaintBox,12465343,119,140)
{
Left=55
Top=10
Width=500
Height=500
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
link(onBeforeDraw,10043336:doNext,[])
}
Add(MathParse,14307840,259,140)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos (%1)"
AngleMode=1
link(X2,9867155:Var2,[(272,110)(251,110)])
link(X3,11880627:Var2,[(279,110)(293,110)])
}
Add(CounterEx,10043336,168,140)
{
Max=359
link(onNext,8911218:doEvent1,[])
}
Add(MathParse,16095580,308,140)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin(-%1)"
AngleMode=1
link(X2,9867155:Var3,[(321,96)])
link(X3,11880627:Var3,[(328,103)])
}
Add(Hub,8911218,217,140)
{
OutCount=3
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(319,153)(319,146)])
link(onEvent3,10361775:doDraw,[(242,160)(242,209)])
}
Add(Memory,13135093,245,49)
{
Default=Integer(150)
}
Add(Memory,7855591,287,49)
{
Default=Integer(240)
}
Add(GetDataEx,9867155,245,91)
{
link(Data,13135093:Value,[])
}
Add(GetDataEx,11880627,287,98)
{
link(Data,7855591:Value,[])
}

карма: 15

0
Ответов: 1291
Рейтинг: 47
#3: 2023-03-28 13:06:51 ЛС | профиль | цитата
Gunta, благодарю! Супер. В тригонометрии и математике не силен, погуглил и из примеров для JS кода выдернул формулу. Но и раньше встречал подобное сочетание. Это наши компоненты такие продвинутые что ли, почему авторы во многих местах такие преобразования делают для рисования и вращения по кругу?

--- Добавлено в 2023-03-28 13:41:08

Вспомнил код откуда взял формулу. Сильно в него не вникал, но похоже там радианы применили потому что там для развертки использовалось Время, то есть линейный счетчик. И видимо, чтобы его "закруглить" к 360 градусам и применили радианы. А я скопипастил не вникая, каюсь) Удивительно что вообще работало с таким двойным преобразованием.
Копипастил формулу из комментов тут: https://ru.stackoverflow.com/questions/566494/Нарисовать-круг-средствами-html4-js-без-явного-css

Редактировалось 3 раз(а), последний 2023-03-29 00:56:10
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 5227
Рейтинг: 587
#4: 2023-03-28 21:30:53 ЛС | профиль | цитата
Aziz, вот хороший ресурс который не раз выручал. Респект чуваку, надо к нему зарегатся да как всегда некогда (отговорка это всё, понимаю. Каюсь)
Сайт -> https://ip76.ru/
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 1291
Рейтинг: 47
#5: 2023-03-29 00:25:13 ЛС | профиль | цитата
andrestudio, спасибо большое, да, очень интересный и полезный сайт, пригодится.

--- Добавлено в 2023-03-29 00:31:38

Там как раз есть то что я собирался сам делать - рисовать спираль. Я делаю сканер цветов нарисованных калейдоскопом для создания мелодии.. Хотя спираль можно просто сделать уже и из вышестоящей схемы - просто увеличивая радиус одновременно с разверткой по градусам..

Код Дельфи с того ресурса:
Построитель спирали
// Создать траекторию спирали
function CreateSpiralPoints(const ARect: TRect; APoints: TList<TPoint>;
ASpiralCount: Integer = 10 ): Integer;
const
DR = PI/180;
var
ctr: TPoint;
i: Integer;
p: TPoint;
d, w, v, Q: Double;
begin
// Чистим список
APoints.Clear;
// Спираль будет начинаться от центра
ctr := ARect.CenterPoint;
// Сразу же этот центр и добавляем
APoints.Add(ctr);
// Максимальный радиус для спирали
Q := Min(ARect.Width, ARect.Height)/2;
// Приращение на каждый градус
d := Q / (360 * ASpiralCount);
// Пока не знаю какая длина
Result := 0;
// Радиус спирали равен 0
w := 0;
// Пока радиус не достиг максимального радиуса
while w < Q do
begin
// Делаем оборот на 360 градусов
for i := 1 to 360 do
begin
// Считаем угол в радианах
v := i * DR;
// Находим координаты
p.X := Round(ctr.X + cos(v)*w);
p.Y := Round(ctr.Y - sin(v)*w);
// Добавляем точку в траекторию
APoints.Add(P);
// Радиус увеличиваем на приращение
w := w + d;
end;
// Тупо суммируем как длины окружностей
Result := Result + Round(2*PI*w);
end;
end;

--- Добавлено в 2023-03-29 00:51:10

Вот интересная спираль получилась) Только как сделать чтобы регулировать раздельно расстояние между витками и точками спирали? Буду тот код с твоего сайта изучать.



Add(Img_Point,10361775,455,315)
{
Color=-16777203
Size=10
Point(X)
Point(Y)
link(onDraw,12465343:doRefresh,[(499,321)(499,265)(443,265)(443,209)])
link(Bitmap,12465343:Bitmap,[])
link(X,14307840:Result,[(468,303)(335,303)])
link(Y,16095580:Result,[(475,303)(384,303)])
}
Add(Timer,11502362,126,329)
{
Interval=100
AutoStop=360
link(onTimer,1782630:doEvent1,[])
}
Add(Hub,1782630,210,329)
{
link(onEvent1,15911703:doNext,[(234,335)(234,328)])
}
Add(MainForm,5818658,140,161)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(PaintBox,12465343,455,203)
{
Left=55
Top=10
Width=245
Height=218
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
}
Add(MathParse,14307840,329,259)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos (%1)"
link(X2,9867155:Var2,[(342,229)(321,229)])
link(X3,11880627:Var2,[(349,229)(363,229)])
}
Add(CounterEx,10043336,245,203)
{
Min=10
Max=150
Step=2
Default=10
Point(doReset)
link(onNext,13135093:doValue,[(296,209)(296,174)])
}
Add(For,8238168,231,280)
{
End=359
}
Add(MathParse,16095580,378,259)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin(-%1)"
link(X2,9867155:Var3,[(391,215)])
link(X3,11880627:Var3,[(398,222)])
}
Add(Hub,8911218,301,259)
{
OutCount=4
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(349,272)(349,265)])
link(onEvent3,10043336:doNext,[(327,279)(327,244)(233,244)(233,209)])
link(onEvent4,10361775:doDraw,[(385,286)(385,321)])
}
Add(Memory,13135093,315,168)
{
@Hint=#6:Radius|
Default=Integer(150)
}
Add(Memory,7855591,357,168)
{
@Hint=#6:Centre|
Default=Integer(240)
}
Add(GetDataEx,9867155,315,210)
{
link(Data,13135093:Value,[])
}
Add(GetDataEx,11880627,357,217)
{
link(Data,7855591:Value,[])
}
Add(CounterEx,15911703,245,322)
{
Max=359
Point(doReset)
Point(onThroughMax)
link(onNext,8911218:doEvent1,[(289,328)(289,265)])
link(onThroughMax,10043336:doReset,[(289,335)(289,275)(233,275)(233,216)])
}


Редактировалось 4 раз(а), последний 2023-03-29 00:57:06
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 8921
Рейтинг: 823
#6: 2023-03-29 10:41:18 ЛС | профиль | цитата
Aziz, не далее, чем вчера, рисовал спираль для другого форума, математического, спираль без окончания, ограничивается лишь точностью чисел "double" , вот картинка:
https://disk.yandex.ru/i/zxB_xYNrqPYimg
карма: 19

0
Ответов: 1291
Рейтинг: 47
#7: 2023-03-29 13:51:02 ЛС | профиль | цитата
Леонид, интересно. Делись формулой) Вообще визуализация сложной математической геометрии, например, 4-мерных фигур, полезна для понимания. Вот бы еще визуализировать Математические Проблемы Тысячелетия и их решения возможно появятся.

Редактировалось 1 раз(а), последний 2023-03-29 13:53:01
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 8921
Рейтинг: 823
#8: 2023-03-29 15:58:43 ЛС | профиль | цитата
Aziz, формулы на рисунке а словами:
"Точка М двигается по кривой, радиус кривизны определяется формулой R=3*cos(pi*t/3)-2, а пройденный путь S=5*sin(pi*t/3)"
карма: 19

0
Ответов: 1291
Рейтинг: 47
#9: 2023-03-29 17:52:11 ЛС | профиль | цитата
Леонид, понял) Спасибо)
Оффтоп
Вот бы еще помог мне нарисовать 4-й перпендикуляр к уже имеющимся 3-м в наших измерениях..)) Нет случайно такой формулы?
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 8921
Рейтинг: 823
#10: 2023-03-29 20:01:37 ЛС | профиль | цитата
Aziz, у вас на компьютере %%hiasmхххх\Elements\Delphi\Example\OpenGL\Space\4_D_шарики.sha (4D_куб.sha)
карма: 19

0
Ответов: 1291
Рейтинг: 47
#11: 2023-03-29 20:04:33 ЛС | профиль | цитата
Леонид, гляну, сенкс, все боялся его запускать)
Вот любопытные фигуры Френеля рисует, аж свет начинает преломляться в глазах или в мозгу интерференция...


Add(Img_Point,10361775,455,315)
{
Color=-16777203
Size=2
Point(X)
Point(Y)
link(onDraw,12465343:doRefresh,[(499,321)(499,265)(443,265)(443,209)])
link(Bitmap,12465343:Bitmap,[])
link(X,14307840:Result,[(468,303)(335,303)])
link(Y,16095580:Result,[(475,303)(384,303)])
}
Add(Timer,11502362,126,308)
{
Interval=100
link(onTimer,8238168:doFor,[(194,314)(194,286)])
}
Add(MainForm,5818658,140,161)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(PaintBox,12465343,455,203)
{
Left=55
Top=10
Width=245
Height=218
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
}
Add(MathParse,14307840,329,259)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos (%1)"
AngleMode=1
link(X2,9867155:Var2,[(342,239)(321,239)])
link(X3,11880627:Var2,[(349,229)(363,229)])
}
Add(For,8238168,231,280)
{
End=359
link(onEvent,8911218:doEvent1,[(282,286)(282,265)])
link(onStop,10720589:doOperation,[(275,293)(275,241)(219,241)(219,188)])
}
Add(MathParse,16095580,378,259)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin(-%1)"
AngleMode=1
link(X2,9867155:Var3,[(391,215)])
link(X3,11880627:Var3,[(398,222)])
}
Add(Hub,8911218,301,259)
{
OutCount=5
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(349,272)(349,265)])
link(onEvent4,10361775:doDraw,[(385,286)(385,321)])
link(onEvent5,5818658:doCaption,[(327,293)(327,230)(128,230)(128,167)])
}
Add(Memory,13135093,315,168)
{
@Hint=#6:Radius|
Default=Integer(150)
}
Add(Memory,7855591,357,168)
{
@Hint=#6:Centre|
Default=Integer(240)
}
Add(GetDataEx,9867155,315,210)
{
link(Data,13135093:Value,[])
}
Add(GetDataEx,11880627,357,217)
{
link(Data,7855591:Value,[])
}
Add(Math,10720589,231,182)
{
OpType=1
Op2=5
link(onResult,13135093:doValue,[(289,188)(289,174)])
link(Op1,9867155:Var1,[(237,170)(277,170)(277,215)])
}


--- Добавлено в 2023-03-29 20:18:05

А вот и спиралька


Add(Img_Point,10361775,455,315)
{
Color=-16777203
Size=2
Point(X)
Point(Y)
link(onDraw,12465343:doRefresh,[(499,321)(499,265)(443,265)(443,209)])
link(Bitmap,12465343:Bitmap,[])
link(X,14307840:Result,[(468,303)(335,303)])
link(Y,16095580:Result,[(475,303)(384,303)])
}
Add(Timer,11502362,126,308)
{
Interval=100
Enable=1
AutoStop=1
link(onTimer,12589365:doWork2,[(181,314)(181,286)])
}
Add(MainForm,5818658,140,161)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
link(onCreate,11502362:doTimer,[(184,181)(184,247)(114,247)(114,314)])
}
Add(PaintBox,12465343,455,203)
{
Left=55
Top=10
Width=245
Height=218
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
}
Add(MathParse,14307840,329,259)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos (%1)"
AngleMode=1
link(X2,9867155:Var2,[(342,239)(321,239)])
link(X3,11880627:Var2,[(349,229)(363,229)])
}
Add(For,8238168,231,280)
{
End=359
link(onEvent,8911218:doEvent1,[(282,286)(282,265)])
link(onStop,16059413:doCompare,[(275,293)(275,349)])
}
Add(MathParse,16095580,378,259)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin(-%1)"
AngleMode=1
link(X2,9867155:Var3,[(391,215)])
link(X3,11880627:Var3,[(398,222)])
}
Add(Hub,8911218,301,259)
{
OutCount=5
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(349,272)(349,265)])
link(onEvent3,10720589:doOperation,[(327,279)(327,233)(219,233)(219,188)])
link(onEvent4,10361775:doDraw,[(385,286)(385,321)])
link(onEvent5,5818658:doCaption,[(327,293)(327,230)(128,230)(128,167)])
}
Add(Memory,13135093,315,168)
{
@Hint=#6:Radius|
Default=Integer(150)
}
Add(Memory,7855591,357,168)
{
@Hint=#6:Centre|
Default=Integer(240)
}
Add(GetDataEx,9867155,315,210)
{
link(Data,13135093:Value,[])
}
Add(GetDataEx,11880627,357,217)
{
link(Data,7855591:Value,[])
}
Add(Math,10720589,231,182)
{
OpType=1
Op2=0.02
link(onResult,13135093:doValue,[(289,188)(289,174)])
link(Op1,9867155:Var1,[(237,170)(277,170)(277,215)])
}
Add(If_else,16059413,287,343)
{
Type=3
Op2=Integer(1)
link(onFalse,12589365:doWork3,[(331,356)(331,322)(207,322)])
link(Op1,10720589:Result,[(293,279)(237,279)])
}
Add(HubEx,12589365,203,280)
{
link(onEvent,8238168:doFor,[])
}


--- Добавлено в 2023-03-29 20:48:16

Чуть упростил и замедлил


Add(Img_Point,10361775,455,315)
{
Color=-16777203
Size=2
Point(X)
Point(Y)
link(onDraw,12465343:doRefresh,[(499,321)(499,265)(443,265)(443,209)])
link(Bitmap,12465343:Bitmap,[])
link(X,14307840:Result,[(468,303)(335,303)])
link(Y,16095580:Result,[(475,303)(384,303)])
}
Add(Timer,11502362,147,343)
{
Interval=10
link(onTimer,10043336:doNext,[])
}
Add(MainForm,5818658,140,161)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(PaintBox,12465343,455,203)
{
Left=55
Top=10
Width=245
Height=218
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
}
Add(MathParse,14307840,329,259)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * cos (%1)"
AngleMode=1
link(X2,9867155:Var2,[(342,239)(321,239)])
link(X3,11880627:Var2,[(349,229)(363,229)])
}
Add(CounterEx,10043336,231,343)
{
Max=359
Point(doReset)
Point(onThroughMax)
link(onNext,8911218:doEvent1,[(282,349)(282,265)])
link(onThroughMax,16059413:doCompare,[])
}
Add(MathParse,16095580,378,259)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
DataCount=3
MathStr="%3 + %2 * sin(-%1)"
AngleMode=1
link(X2,9867155:Var3,[(391,215)])
link(X3,11880627:Var3,[(398,222)])
}
Add(Hub,8911218,301,259)
{
OutCount=5
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[(349,272)(349,265)])
link(onEvent3,10720589:doOperation,[(327,279)(327,233)(219,233)(219,167)])
link(onEvent4,10361775:doDraw,[(385,286)(385,321)])
link(onEvent5,5818658:doCaption,[(327,293)(327,230)(128,230)(128,167)])
}
Add(Memory,7855591,357,168)
{
@Hint=#6:Centre|
Default=Integer(240)
}
Add(GetDataEx,9867155,315,210)
{
link(Data,10348906:Var3,[(321,204)(302,204)(302,215)])
}
Add(GetDataEx,11880627,357,217)
{
link(Data,7855591:Value,[])
}
Add(Math,10720589,287,161)
{
OpType=1
Default=150
Point(doClear)
link(Op1,10348906:Var1,[(293,149)(284,149)(284,215)])
link(Op2,12715640:Value,[])
}
Add(If_else,16059413,287,350)
{
Type=3
Op2=Integer(1)
link(onTrue,10720589:doClear,[(331,356)(331,276)(219,276)(219,174)])
link(Op1,10348906:Var2,[])
}
Add(Memory,12715640,294,112)
{
@Hint=#6:Centre|
Default=Real(0.02)
}
Add(GetDataEx,10348906,287,210)
{
link(Data,10720589:Result,[])
}


Редактировалось 2 раз(а), последний 2023-03-29 20:48:16
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 783
Рейтинг: 168
#12: 2023-03-29 21:54:10 ЛС | профиль | цитата
Aziz писал(а):
Чуть упростил и замедлил


Add(Img_Point,10361775,364,266)
{
Color=-16777203
Size=2
Point(X)
Point(Y)
link(Bitmap,12465343:Bitmap,[(370,250)(230,250)])
link(X,14307840:Result,[])
link(Y,16095580:Result,[(384,250)(426,250)])
}
Add(Timer,11502362,168,203)
{
Interval=5
AutoStop=10000
link(onTimer,12465343:doRefresh,[])
}
Add(PaintBox,12465343,224,203)
{
Left=55
Top=10
Width=500
Height=500
Align=5
Color=16777215
WinStyle=1
ColorSp=0
Point(onClick)
link(onBeforeDraw,10043336:doNext,[])
}
Add(MathParse,14307840,371,203)
{
@Hint=#38:Math.sin((Math.PI * angl / 180) / 2), |30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
MathStr="%2 + (%1*0.02)* cos(%1)"
AngleMode=1
link(X2,7963034:Var1,[(384,180)])
}
Add(MathParse,16095580,420,210)
{
@Hint=#30:x = 150 + R * cos ((pi *2)* t)|31:y = 150 + R * sin (-(pi *2)* t)|27:%3 + %2 * cos ((pi *2)* %1)|
MathStr="%2 + (%1*0.02)*sin(%1)"
AngleMode=1
link(X2,7963034:Var2,[])
}
Add(Hub,8911218,329,203)
{
OutCount=3
link(onEvent1,14307840:doCalc,[])
link(onEvent2,16095580:doCalc,[])
link(onEvent3,10361775:doDraw,[(354,223)(354,272)])
}
Add(Memory,7855591,427,119)
{
@Hint=#6:Centre|
Default=Integer(240)
}
Add(GetDataEx,7963034,427,175)
{
link(Data,7855591:Value,[])
}
Add(MainForm,15856356,112,196)
{
@Hint=#8:(c) Aziz|
Width=500
Height=500
Caption="Рисование окружности по формуле"
}
Add(CounterEx,10043336,280,203)
{
Max=10000
Direct=1
Point(doReset)
Point(onThroughMax)
link(onNext,8911218:doEvent1,[])
}

карма: 15

0
Ответов: 1291
Рейтинг: 47
#13: 2023-03-29 22:57:32 ЛС | профиль | цитата
Gunta, спасибо) Я к подобному варианту тоже пришел, но отбросил ради наглядности - чтобы не упускать развертку в 360 гр, обозначающую один виток спирали и чтобы более наглядно было как модифицируется спираль. И масштабируемости - при увеличении диаметра спирали придется неинтуитивно подбирать значения ее длины, которая сейчас у вас 1000 точек в счетчике.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)