目录
一、前言
二、使用 EasyX 绘制笛卡尔心形线
一、前言
"谁能告诉我,这是什么?"
"爱心呗"
"哼,爱心,我们叫它心形线。关于心形线呢,还有一个美丽的故事,是跟笛卡尔有关。说笛卡尔和美丽的瑞典公主相爱了,因为他们之间相差了三十多岁,国王知道了呢,就极力地反对,并把笛卡尔流放了。笛卡尔在临死之前写给公主的情书当中写了这样一条公式 ,公主接到这封情书的时候,笛卡尔已经死在了狱中,公主也一生未嫁,而这个公式解出来的图形,就是著名的心形线。
是不是很浪漫啊?嗯?哼,但真相远远要比童话残酷。这个故事还有另外一个版本,说是公主根本就不在乎笛卡尔,笛卡尔也不是死于疾病,而是死于背叛。所以究竟是相信真相,还是童话,是你们每个人的选择,就像用什么方式解开这道题,也是你们的选择一样。"
二、使用 EasyX 绘制笛卡尔心形线
知道极坐标后,就知道该曲线对应的参数方程,即已知曲线 ,则对应的参数方程为:
#include <easyx.h>
#include <stdio.h>
#include <math.h>
#define WIDTH 640
#define HEIGHT 480
#define PI 3.1415926
#define ONE_DEGREE PI / 180
void cardioid(int a)
{
setorigin(WIDTH / 2, HEIGHT / 2); // 将逻辑坐标的原点移到窗体中心
setaspectratio(1, -1); // 使 y 轴向上为正
setlinecolor(RED); // 设置画线颜色
setlinestyle(PS_SOLID, 3); // 设置画线样式
int x1, y1, x2, y2;
double theta = 0.0;
while (theta <= 2 * PI)
{
x1 = a * (1 - sin(theta)) * cos(theta);
y1 = a * (1 - sin(theta)) * sin(theta);
theta += ONE_DEGREE;
x2 = a * (1 - sin(theta)) * cos(theta);
y2 = a * (1 - sin(theta)) * sin(theta);
line(x1, y1, x2, y2);
}
}
int main()
{
initgraph(WIDTH, HEIGHT);
cardioid(100);
getchar();
closegraph();
return 0;
}
《隐秘的角落》推荐~