当前位置: 首页 > news >正文

Games101作业四

作业0到作业3的代码

        这次是实现 de Casteljau 算法,以及绘制 Bezier 曲线,比上次简单

        核心思想就是递归,原理忘了就去看第十一节课,从15:00开始的        

GAMES101-现代计算机图形学入门-闫令琪

 代码

先实现贝塞尔曲线

cv::Point2f recursive_bezier(const std::vector<cv::Point2f> &control_points, float t) 
{// 基线条件:当只剩一个控制点时,返回该点if(control_points.size() == 1) return control_points[0];// 创建下一级递归的控制点集合std::vector<cv::Point2f> next_control_points = {};// 对每对相邻控制点进行线性插值for(int i = 0; i < control_points.size() - 1; ++i) {auto &a = control_points[i];       // 当前控制点auto &b = control_points[i + 1];   // 下一个控制点// 线性插值:a + t*(b - a) = (1-t)*a + t*bauto p = a + t * (b - a);// 将插值结果加入下一级控制点集合next_control_points.emplace_back(p);}// 递归调用,处理下一级控制点return recursive_bezier(next_control_points, t);
}

 绘制 Bezier 曲线

void bezier(const std::vector<cv::Point2f> &control_points, cv::Mat &window) 
{// TODO: Iterate through all t = 0 to t = 1 with small steps, and call de Casteljau's // recursive Bezier algorithm.// 遍历 t 从 0.0 到 1.0,每次增加 0.001for (double t = 0.0; t <= 1.0; t += 0.001) {// 调用递归贝塞尔算法计算当前 t 对应的曲线点cv::Point2f point = recursive_bezier(control_points, t);// 在图像窗口的 (point.y, point.x) 位置设置绿色通道为255// OpenCV 中 Mat 的 at 方法是 (row, col) 即 (y, x)window.at<cv::Vec3b>(point.y, point.x)[1] = 255;}
}

效果

随便在窗口上点四个点生成相应贝塞尔曲线

相关文章:

  • IBM BAW(原BPM升级版)使用教程第十四讲
  • 大语言模型RLHF训练框架全景解析:OpenRLHF、verl、LLaMA-Factory与SWIFT深度对比
  • 网络层试题
  • CD3MN 双相钢 2205 材质保温 V 型球阀:恒温工况下复杂介质控制的高性能之选-耀圣
  • 大模型分布式光伏功率预测实现详解
  • Qt进阶开发:QTcpSocket的详解
  • Three.js模型材质调整与性能优化实战
  • 通义灵码2.5版本全新体验
  • 使用交互式半自动化标注工具制作语义分割数据集
  • Java Spring 事件驱动机制
  • KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?
  • git Authentication failed for 的解决办法
  • vim,gcc/g++,makefile,cmake
  • 适应性神经树:当深度学习遇上决策树的“生长法则”
  • VSCode中Node.js 使用教程
  • 深度学习计算
  • IP代理池环境配置
  • React面试常问问题详解
  • 《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》
  • ElasticSearch父子关系数据建模
  • 足球少年郎7月试锋芒,明日之星冠军杯构建顶级青少年赛事
  • 《蛮好的人生》:为啥人人都爱这个不完美的“大女主”
  • 习近平在中拉论坛第四届部长级会议开幕式的主旨讲话(全文)
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 旭辉控股集团主席林中:债务重组是活下来的前提,自营开发业务收缩至少数核心城市
  • 苹果或将于2027年推出由玻璃制成的曲面iPhone