
Сообщение от
ivagor
если бы не локальные утолщения
Нет ничего невозможного 
Вот новый вариант, постарался сделать максимально похожим на алгоритм окружности, чтобы было видно саму идею:
Код:
const circle = function(r) {
let t=r/2,x=r,y=0;
while(x>=0) {
pset(x,y);
if(t>=0) { ++y; t-=y; }
if(t<0) { --x; t+=x; }
}
}
const ellibase = function(r,r1,swap) {
let t=r/2,x=r,y=0,t1=t,y1=0,py=0;
while(x>=0) {
py=y1; if(swap) pset(y1,x); else pset(x,y1);
if(t>=0) { ++y; t-=y; if((t1-=r1)<0) { t1+=r; ++y1; } }
if(t<0) { --x; t+=x; if(py==y1 && t>y && t1<r1) { ++y; t-=y; t1+=r-r1; ++y1; } }
}
}
const ellipse = function(rx,ry) {
if(rx>ry)
ellibase(rx,ry,0);
else
ellibase(ry,rx,1);
}
Код выделенным шрифтом убирает утолщения.
Ссылка для тестирования та-же.