椭圆生成算法

椭圆的定义:到两定点距离相等的所有的点的集合

椭圆的标准方程

(x-x1)*(x-x1)/rx*rx + (y-y1)*(y-y1)/ry*ry = 1;

 

第一种方法 椭圆标准方程生成算法

根据椭圆的标准方程可以推导出椭圆的参数方程,如下:

x = x1 + R1*Cosα

y = y1 + R2*Sinα

 

实例化代码:

#include <iostream>
#include <math.h>
#define PI 3.14
#define KEY 15
using namespace std;
 
struct Point{
int x;
int y;
};
 
void PointsEllipse(int x1,int y1,int r1,int r2){
Point point; //零时变量
int radian = 0;
while(radian<360){
if(radian == 0){
point.x = x1;
point.y = y1 + r1;
radian+=KEY;
printf("Point X:%d Y:%d/r/n",point.x,point.y);
continue;
}
else if(radian == 90){
point.x = x1 + r2;
point.y = y1;
radian+=KEY;
printf("Point X:%d Y:%d/r/n",point.x,point.y);
continue;
}
else if(radian == 180){
point.x = x1;
point.y = y1 - r1;
radian+=KEY;
printf("Point X:%d Y:%d/r/n",point.x,point.y);
continue;
}
else if(radian == 270){
point.x = x1 - r2;
point.y = y1;
printf("Point X:%d Y:%d/r/n",point.x,point.y);
radian+=KEY;
continue;
}
else{
point.x = x1 + (double)r2 * cos(((double)radian*PI)/180);
point.y = y1 + (double)r1 * sin(((double)radian*PI)/180);
printf("Point X:%d Y:%d/r/n",point.x,point.y);
radian+=KEY;
}
}
}
 
int main(){
PointsEllipse(0,0,5,10);
return 0;
}