Вот формулы:
Код:
function GetX(a, b: double): double;
begin
Result := RadiusX * sin( a ) * cos( b );
end;
function GetY(a, b: double): double;
begin
Result := RadiusY * sin( a ) * sin( b );
end;
function GetZ(a, b: double): double;
begin
Result := RadiusY * cos( a );
end;
a и
b - кол-во сторон и граней на стороне соответственно. Сам сможешь нарисовать?
P.S.
Если под 3D овалом ты понимаешь тор, то формулы будут такие:
Код:
function GetX(a, b: double): double;
begin
Result := ( RadiusOuter + RadiusInner * cos( a ) ) * cos( b );
end;
function GetY(a, b: double): double;
begin
Result := ( RadiusOuter + RadiusInner * cos( a ) ) * sin( b );
end;
function GetZ(a, b: double): double;
begin
Result := RadiusInner * sin( a );
end;