Евгений, для спиралек у меня такой код получился... правда, это сырая версия, но работает...
Код
/* золотая спираль.*/
//-----------------------------------------------
double p1,p2,p3,p4,p5=0,p6=0,p6a=0, pp12,pp23,pp34, pps,ppa,ppb,ppc,ppt,ppT, kf12, kf13, kf14, kf23, kf24, kf34, bb12, bb23, bb34, bbs, bbc;
int b1, b2, b3, b4, b5, b6, b6a, bba,bbb,bbt,bbT, MR, LTdir, LCdir;
#include <mr2Grafika.mq4>
int start() {int a;
ob="s"; om="s"; initgraf();
if ( ObjectFind(om+"0")==0) {
for(a=0;a<=200;a++){ killray(a); }
Comment("obj list "+om+"xx removed.");
return;
}
if ( ObjectFind(ob)==0) { getOxy(ob, b1,p1, b2,p2);}
else{ b1=mvb; p1=Mpw; b2=b1-(bpw/2+0.0); p2=p1+vola*5;}
double k,r, shag=pi/10.0, krug=pi*2.0, B=(b2-b1), P=p2-p1;
for(a=0, k=0; k<8*krug; k+=shag, a++){
r=MathPow(Fi,k/krug);
segn(a,0,0, b1+B*r*MathCos(k), p1+P*r*MathSin(k), 0,Red);
}
}
/* изменено в библиотеке..
/////////////////////////////////////////////////////////
void segn(string c, double b1, double p1, double b2, double p2,int sy,int C, string s=""){static double B1=0,P1=0; if (p2==0) return;
if(p1==0) { if(P1!=0){p1=P1;b1=B1;}else{p1=p2;b1=b2;} } P1=p2; B1=b2;
if(b2==b1){ segm(c,b1,p1,b2,p2,sy,C,s); }else
{if(b1<b2){Xd(b1,b2);Xd(p1,p2);} double kof=(p2-p1)/(b1-b2); segm(c,MathCeil(b1),p1-kof*(MathCeil(b1)-b1), MathFloor(b2) ,p2-kof*(MathFloor(b2)-b2),sy,C,s); }
}
double pi=3.1415926535898;
double Fi=(MathSqrt(5)+1)/2.0;
*/