椭圆生成算法
椭圆的定义:到两定点距离相等的所有的点的集合
椭圆的标准方程
(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;
}