C++对称抛物迷幻视界_C++数字生成艺术展示

C++对称抛物迷幻视界

这是一个使用 C++ 语言和 sprites.h(一个类似 Python Turtle 的绘图库)编写的图形生成程序。

  • 核心逻辑 :程序通过一个无限循环 while(true) 来不断刷新屏幕,实现动画效果。
  • 颜色计算 :利用变量 phase(相位)随时间递增,结合坐标 y 计算出 val 值。这个值被用来动态计算颜色的色相 (colorVal) 和明度/饱和度 (shadeVal),从而产生彩虹般的渐变条纹。
  • 图形变换 :代码中最巧妙的部分在于 if 语句块内的四次绘图操作。它不仅仅绘制原始坐标 (x, y),还通过对称变换绘制了 (x, -y)(y, x)(-y, x)。这使得原本单一的图案在屏幕上形成了四重旋转对称(上下左右及对角线对称),构成了类似"回"字形的结构。
  • 形状裁剪if (y - (0.005 * x * x ) > 0 ) 这行代码定义了一个抛物线区域。只有位于抛物线上方的点才会被绘制,这就解释了为什么屏幕中心会留出一个黑色的、边缘内凹的四角星形空洞。

视频描述: 视频展示了一个极具视觉冲击力的迷幻动画。

  • 视觉效果:画面中心是一个黑色的、类似内凹四角星的区域,四周被密集的彩虹色线条填满。
  • 动态变化 :随着程序的运行,彩虹色的条纹仿佛在不断地流动和呼吸。由于 phase 变量的增加,颜色条纹产生了一种向中心无限延伸或从中心向外扩散的错觉,营造出强烈的纵深感和隧道效应。
  • 整体风格:这是一种典型的"生成艺术"(Generative Art),通过简单的数学公式(绝对值、抛物线、线性变换)创造出了复杂且令人 hypnotic(催眠)的视觉体验。
  • 本程序所有代码
cpp 复制代码
#include "sprites.h"  //采用C++精灵库
Screen sc;
Sprite t;
int main(){  //C++对称抛物彩虹视界 
  t.ht().bgcolor("black").tracer(0).speed(0).pu();
  // 相位偏移量
  int phase = 0;
  while(true){
    sc.clear();
    for(int x=-500; x<=500; x++){
      for(int y=-350; y<=350; y++){
       double val =  abs(y/30.0 + phase/10.0);        
       int colorVal = 80 * (val + 1);     
       int shadeVal = 200 * (val * val);
       if (y - (0.005 * x * x ) > 0 ) {      
          t.pencolor(colorVal).penshade(shadeVal);
          t.go(x,y+50).dot(2);           
          t.go(x,-y-50).dot(2); 
          t.go(y+50,x).dot(2);           
          t.go(-y-50,x).dot(2);          
          }
      }
    }
    sc.update();
    //数值越大,移动越快
    phase += 5;
  }     
  return 0;
}
相关推荐
李兴球1 个月前
C++罗马曲面3D旋转程序代码解说_C++精灵库应用案例
数学建模·c++趣味编程·c++创意编程·c++计算机图形学·c++3d编程·c++数学可视化·c++3d 艺术
李兴球1 个月前
Comucopia丰饶角曲面3D旋转动画解析_C++精灵库可视化案例
c++数学编程·c++创意编程·c++粒子效果·c++艺术编程·c++计算机图形学
李兴球2 个月前
上帝之眼_数理艺术编程_C++精灵库编程案例
c++海龟绘图·c++数学艺术·c++创意编程·c++少儿编程·c++可视化函数·c++数学公式可视化·c++数理编程
李兴球2 个月前
爱情表白程序_数学艺术编程的浪漫诗篇_C++精灵库应用案例
c++趣味编程·c++数学编程·c++精灵库案例·c++创意编程·c++粒子效果·c++艺术编程·c++表白程序
李兴球2 个月前
圆到方的“变形记”_数学与编程的完美结合_画圆角矩形
c++算法可视化·c++数学艺术·c++数学编程·c++精灵库案例·c++精灵库应用·c++拉梅曲线·c++超椭圆