cpp
#include "sprites.h" //包含C++精灵库
Sprite t; //建立角色叫t
int r = 100; //半径
float step= 0.5; //步长
void draw_round_rect(int n){ //画圆角矩形的函数
float x = -r;t.go(x,0).pd(); //到达这个地方落笔
while(x<=r){
float y = pow( (pow(r,n) - pow(fabs(x),n)),1.0/n);
//颜色的色样加增1然后到达x,y坐标,所以有彩虹渐变效果,非常漂亮
t.coloradd(1).go(x,y); x += step;
}
x = r; t.go(x,0).pd();
while(x>=-r){
float y = -pow( (pow(r,n) - pow(fabs(x),n)),1.0/n);
t.coloradd(1).go(x,y); x -= step;
}
t.pu(); g_screen->update();
}
int main(){ //主功能块
t.bgcolor("black").speed(0).tracer(0).pensize(4).color(0).ht().pu().wait(1);
for(int n=2;n<=50;n++){ //指数从2增加到50,从圆形逐渐变成正方形
t.clear();
std::string nn= std::to_string(n);
std::string s = nn + " " + nn + " " + nn;
t.go(20,200).write(s,16); //写上指数
s = "x + y = 100";
t.go(0,180).write(s,48); //写上下面的x y 和100
draw_round_rect(n); //画圆角矩形
t.wait(0.5); //等待0.5秒
}
t.done(); //完成了
return 0; //返回0
}
这段C++代码通过精灵库展示了数学中一个非常有趣的概念------超椭圆(拉梅曲线),并且以一种视觉上吸引人的方式实现了它。以下是对该程序的一些有趣的评论:
-
数学与编程的完美结合:这个程序不仅仅是简单的绘图,而是将数学公式(超椭圆方程)与编程技巧相结合,创造出动态变化的形状。从圆形逐渐过渡到正方形的过程,既展示了数学公式的美妙之处,也体现了编程实现复杂概念的能力。
-
精灵库带来的便捷 :使用C++精灵库让绘制过程变得简单而直观。比如
t.go(x, y)和t.coloradd(1).go(x, y)等函数调用,使得位置移动和颜色调整变得轻而易举。这极大地简化了图形绘制的复杂度,使开发者可以专注于算法和效果的设计而非底层细节。 -
视觉效果惊艳:通过逐步增加指数n,观察形状从圆形平滑地过渡到正方形,配合彩虹渐变的颜色效果,给人一种视觉上的享受。这种动态变化不仅有助于理解超椭圆的概念,也为教学提供了生动的例子。
-
教育价值显著:此程序非常适合用于教学目的,帮助学生更好地理解超椭圆的概念及其数学表达式。同时,它也展示了如何通过编程将抽象的数学概念转化为具体的视觉形象,激发学生的创造力和学习兴趣。
-
灵活性和扩展性:虽然当前程序只演示了特定范围内的n值变化,但它的设计允许轻松修改参数来探索不同条件下的超椭圆形态。这为进一步的研究和探索提供了可能,如改变步长、颜色方案或背景设置等。
总之,这个程序不仅仅是一个简单的绘图工具,它还是一个展示数学之美、编程之巧以及两者结合所能创造出来的无限可能性的绝佳案例。