Привет!
Для рисования кривых по точкам использовал функцию:

Код:
function Multicurve(Xargs, Yargs, closed)
{
var Xmid = Xargs.slice(0);
var Ymid = Yargs.slice(0);
if ((Xmid.length != Ymid.length) || (Xmid.length < 2))
{
trace('Wrong Arguments');
return this;
}
if (Xmid.length == 2)
{
this.moveTo(Xmid[0],Ymid[0]);
this.lineTo(Xmid[1],Ymid[1]);
delete Xmid;
delete Ymid;
return this;
}
var Xpoint = new Array();
var Ypoint = new Array();
for (var i = 1; i < Xmid.length - 2; i++)
{
Xpoint[i] = 0.5 * (Xmid[i + 1] + Xmid[i]);
Ypoint[i] = 0.5 * (Ymid[i + 1] + Ymid[i]);
}
if (closed)
{
Xpoint[0] = 0.5 * (Xmid[1] + Xmid[0]);
Ypoint[0] = 0.5 * (Ymid[1] + Ymid[0]);
Xpoint[i] = 0.5 * (Xmid[i + 1] + Xmid[i]);
Ypoint[i] = 0.5 * (Ymid[i + 1] + Ymid[i]);
Xpoint[i + 1] = 0.5 * (Xmid[i + 1] + Xmid[0]);
Ypoint[i + 1] = 0.5 * (Ymid[i + 1] + Ymid[0]);
Xmid[i + 2] = Xmid[0];
Ymid[i + 2] = Ymid[0];
Xpoint[i + 2] = Xpoint[0];
Ypoint[i + 2] = Ypoint[0];
}
else
{
Xpoint[0] = Xmid[0];
Ypoint[0] = Ymid[0];
Xpoint[i] = Xmid[i + 1];
Ypoint[i] = Ymid[i + 1];
Xmid.pop();
Ymid.pop();
}
this.moveTo(Xpoint[0],Ypoint[0]);
for (var i = 1; i < Xmid.length; i++)
{
this.curveTo(Xmid[i],Ymid[i],Xpoint[i],Ypoint[i]);
}
delete Xmid;
delete Ymid;
delete Xpoint;
delete Ypoint;
return this;
}
Object.prototype.multicurveTo = Multicurve;
Если при создании контура эту функцию использовать один раз, то все ок. Но если присоздании контура ее использовать дважду, в любых комбинациях, то при заливке появляются странные незапланированные артифакты. Хотя без заливки контур нормальный. С заливкой же контур имеет странную форму.
Подскажите, с чем это связано?