游戏开发中的贝塞尔曲线:感受丝滑的数学之美

这是一篇vip文章,如果你还不是vip,可以移步https://www.ilikexff.cn/articles/165免费阅读。

介绍

贝塞尔曲线是计算机图形学中最重要的概念之一,以其在表示曲线时的灵活性和精确性而闻名。广泛应用于计算机图形学、动画、路径规划等领域的数学曲线。

贝塞尔曲线的数学原理基础是1912年成立的伯恩斯坦多项式。

简单来说,贝塞尔曲线是通过可变数量的点定义的。当控制点只有两个时,绘制出来的是一条直线,也称为线性贝塞尔曲线

具有三个控制点的贝塞尔曲线是 二次贝塞尔曲线,四个点控制的则是三次贝塞尔曲线,以此类推。

其中,二次和三次贝塞尔曲线比较常用,也是比较受欢迎的两种。因为他们在计算简单性和能够表示无限范围的曲线之间取得了平衡。


曲线方程

贝塞尔曲线方程可以表示为:

image

其中, B ( t ) B(t) B(t) 是贝塞尔曲线在参数 t 上的点。

n n n是贝塞尔曲线的次数

P i P_i Pi是控制点。

更具体的,对于一阶贝塞尔曲线,公式如下:

B ( t ) = ( 1 − t ) P 0 + t P 1 ,其中  t ∈ [ 0 , 1 ] B(t) = (1 - t) P_0 + t P_1 \quad \text{,其中 } t \in [0, 1] B(t)=(1t)P0+tP1,其中 t[0,1]

其中的 P 0 P_0 P0, P 1 P_1 P1是两个控制点,曲线从 P 0 P_0 P0出发,经过 P 1 P_1 P1,且为一条直线。

二次贝塞尔曲线有三个控制点,通常用于平滑的路径绘制。该曲线依赖于一个控制点来弯曲直线,这种操作相比很多人都不陌生,我们在很多绘图软件中需要用到曲线或者带箭头的曲线时,都会通过鼠标拖动头尾之外的中间点来实现想要的弯曲效果。

B ( t ) = ( 1 − t ) 2 P 0 + 2 ( 1 − t ) t P 1 + t 2 P 2 ,其中  t ∈ [ 0 , 1 ] B(t) = (1 - t)^2 P_0 + 2(1 - t)t P_1 + t^2 P_2 \quad \text{,其中 } t \in [0, 1] B(t)=(1t)2P0+2(1t)tP1+t2P2,其中 t[0,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强化学习课程:stanford_cs234 学习笔记(2)introduction to RL

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言5、强化学习课程大纲5.1 课程内容主:5.2 马尔可夫决策过程:5.2.1 马尔可夫性 markov propterty5.2.2 马尔可夫过程 markov process5.2.3…

第 26 场 蓝桥月赛 部分题解

第 26 场 蓝桥月赛 2.灯笼猜谜3.元宵分配4.摆放汤圆5.元宵交友(运行超时 通过90%) 2.灯笼猜谜 分析:以当前位置为视角,要想移动的距离尽可能的少,按顺序猜谜语,给你一个区间,有三种情况&#xf…

JAVA实战开源项目:体育馆使用预约平台(Vue+SpringBoot) 附源码

本文项目编号 T 144 ,文末自助获取源码 \color{red}{T144,文末自助获取源码} T144,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

解决【vite-plugin-top-level-await】 插件导致的 Bindings Not Found 错误

解决【vite-plugin-top-level-await】 插件导致的 Bindings Not Found 错误 环境设置 操作系统: macOS硬件平台: M1 Pro前端框架: Vue 3Node.js 版本: 20 在使用 Vue 项目时,我们尝试集成 vite-plugin-top-level-await 插件以支持顶层 await 语法。然而&#xff…

推荐系统(十九):优势特征蒸馏(Privileged Features Distillation)在商品推荐中的应用(二)

在上一篇文章《推荐系统(十八):优势特征蒸馏(Privileged Features Distillation)在商品推荐中的应用》中,笔者实现了一个基于 PFD 思想的 Demo。其中,Teacher 模型和 Student 模型都是简单的单任务(CTR)模型,在本节,笔者将基于 PFD 思想实现一个多任务模型:其中,Tea…

深度学习之卷积

从全连接到卷积 MLP的缺陷,假设有如下的场景: 分类猫和狗的图片 使用一个还不错的相机采集图片(12M像素)RGB图片有 36M元素使用100大小的单隐藏层MLP,模型有 3.6B元素 远多于世界上所有猫和狗总数(900M狗,600M猫) …

目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库

环境情况 ubuntu 18.04 → 20.04(最终) 安装Ubuntu1804虚拟机系统 Anaconda:可参考我的另一篇文章 Python 3.6.13 → 3.8(最终)Anaconda3-2021.05 目标识别:YOLOv5相关 1、安装git sudo apt install gi…

LinuxTCP/UDP基础概念

TCP(传输控制协议) TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点包括: 面向连接:在传输数据之前,需要通过“三次握手”建立连接;传输结束后,通过“四次挥手”断开…

MP3、WAV、RM、PNG格式

MP3、WAV、RM、PNG格式 MP3 是一种音频压缩格式,采用了 MPEG-1 Audio Layer 3 或 MPEG-2 Audio Layer 3 编码标准.MP3 格式能够以较小的文件大小存储高质量的音频,可在多种设备如手机、MP3 播放器、电脑上播放,是目前应用最广泛的音频格式之一. MPEG-1 是MPEG(Moving Pictu…

力扣hot100:滑动窗口——找到字符串中所有字母异位词

题目链接:找到字符串中所有字母异位词 考虑用滑动窗口,窗口大小固定为字符串p的长度,用一个for循环控制子串的结束位置。 怎么判断是字母异位词? 1、排序:字符串中所有符合条件的字母异位词与目标串p在经过排序后是…

人工智能通识速览一(神经网络)(编辑中)

上篇:人工智能通识速览一(机器学习) 人工智能通识速览一(机器学习)(编辑中)-CSDN博客https://blog.csdn.net/siper12138/article/details/146512068?sharetypeblogdetail&sharerId1465120…

【数据标准】数据标准化框架体系-基础类数据标准

导读:数据标准化的四大基础类标准(业务术语、业务规则、命名规范、代码标准)是企业数据治理的核心支柱。主要作用体现在​消除业务与技术间的语义鸿沟​(通过统一术语与命名规范),​保障数据全生命周期的质…

可发1区的超级创新思路(python\matlab实现):MPTS+Lconv+注意力集成机制的Transformer时间序列模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等。 一、模型整体架构(本文以光伏功率预测为例) 本模型由多尺度特征提取模块(MPTS)…

深入解析C#中的解释器模式:原理与应用

解释器模式(Interpreter Pattern)是一种行为型设计模式,旨在为特定的语言提供解释和执行的能力。该模式将语言的文法规则封装在类中,使得能够灵活、动态地对这些规则进行解释。在实际开发中,尤其是处理一些定制的表达式…

LeetCode知识点整理

1、Scanner 输入: import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 读取整数int num scanner.nextInt();// 读取一行字符串String line scanner.nextLine();scanner.close();…

红宝书第二十一讲:详解JavaScript的模块化(CommonJS与ES Modules)

红宝书第二十一讲:详解JavaScript的模块化(CommonJS与ES Modules) 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、模块化的意义:分而治之 模块化解决代码依赖混…

Android Product Flavors 深度解析与最佳实践:构建多版本应用的全方位指南

1. 高效配置模板 1.1 现代化多维度配置 (Kotlin DSL) android {flavorDimensions listOf("version", "market", "environment")productFlavors {register("free") {dimension "version"applicationIdSuffix ".free…

QListView开发入门

1. QListView 基础介绍 QListView 是 Qt 框架中用于显示项目列表的控件,属于模型/视图架构的一部分。它提供了一种灵活的方式来显示和操作项目列表。 主要特点: 基于模型/视图架构 支持多种视图模式(列表、图标) 内置选择、编…

Cookie可以存哪些指?

Cookie是一种小型文本文件,通常由服务器生成并发送到用户浏览器中保存。它可以用于存储一些简单但非常有用的信息,以便于后续请求时自动附带回服务器使用。下面是Cookie能够存储的一些典型内容类别及用途说明: 会话标识符(Session ID) 这是最…

非手性分子发光有妙招:借液晶之力,实现高不对称圆偏振发光

*本文只做阅读笔记分享* 一、圆偏振发光研究背景与挑战 圆偏振发光(CPL)材料在3D显示、光电器件等领域大有用处,衡量它的一个重要指标是不对称发光因子(glum)。早期CPL材料的glum值低,限制了实际应用。为…