Unity中的Bezier曲线与曲面上点的计算

news2024/10/5 23:28:19

上代码:

//获取基于4个控制点的Bezier曲线上的点
Vector3 GetBezierPoint(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
	t = Mathf.Clamp01(t);
	float s = 1f - t;
	return s * s * s * p0 + 3f * s * s * t * p1 + 3f * s * t * t * p2 + t * t * t * p3;
}

//获取基于12个控制点的曲面上的点,就是说ps是12个元素的数组
Vector3 GetSurfacePoint12(Vector3[] ps, float tu, float tv)
{
	Vector3 p0 = GetBezierPoint(ps[0], ps[1], ps[2], ps[3], tu);
	Vector3 p3 = GetBezierPoint(ps[9], ps[8], ps[7], ps[6], tu);
	Vector3 p1 = p0 + (ps[11] - ps[0]) * (1 - tu) + (ps[4] - ps[3]) * tu;
	Vector3 p2 = p3 + (ps[10] - ps[9]) * (1 - tu) + (ps[5] - ps[6]) * tu;
	return GetBezierPoint(p0, p1, p2, p3, tv);
}

//获取基于16个控制点的曲面上的点,就是说ps是16个元素的数组
Vector3 GetSurfacePoint16(Vector3[] ps, float tu, float tv)
{
	Vector3 p0 = GetBezierPoint(ps[0], ps[1], ps[2], ps[3], tu);
	Vector3 p1 = GetBezierPoint(ps[4], ps[5], ps[6], ps[7], tu);
	Vector3 p2 = GetBezierPoint(ps[8], ps[9], ps[10], ps[11], tu);
	Vector3 p3 = GetBezierPoint(ps[12], ps[13], ps[14], ps[15], tu);
	return GetBezierPoint(p0, p1, p2, p3, tv);
}

对于基于12个控制点的曲面,其点序号排布方式如下:

 对于基于16个控制点的曲面,其点序号排布方式如下:

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

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

相关文章

如何在 OpenCV 和 Python 中使用滑动窗口进行物体检测

文末附源代码的免费下载链接 目录 物体检测的滑动窗口技术讲解 使用 OpenCV 和 Python 实现滑动窗口技术 结论 代码下载链接

Python采集某漫画网站<灵剑尊>VIP漫画内容

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 安装方法: win R 输入cmd 输入安装命令…

【Django】列表数据Paginatior分页,动态返回页码,显示当前页、总页数、跳转页

问题 1、当返回数据较多,如设置每页展示10条,数据接近200条,返回页码范围1~20,前端每个页码都显示的话,就会出现页码超出当前页面,被遮挡的页码无法操作和显示不美观; 2、列表的所在页码,总分页数,跳转不在动态页面的页数 解决 在使用paginator转化为Page对象后,获…

BI测试(知识总结)

目录 前言 BI测试: 测试策略: 1、测试准备工作: 2、报表测试点 3、测试步骤(流程) 🎁更多干货 前言 由于之前做过一段时间大数据测试,故整理BI测试知识点以供学习。 BI测试&#xff1a…

2.网洛通讯模型

目录 osi七层参考模型 应用层——应用层序 表示层 会话层 传输层 网络层——ip地址,实现逻辑寻址 数据链路层(介质访问层MAC)(逻辑访问控制层LLC)——物理寻址 物理层——处理电信号 TCP/IP模型 TCP和UDP 不…

阿里领导给的Java八股文,包括15条技术线,已助1900人进入大厂!

为了更高的薪水跳槽无可厚非,但你要把握好一个度。 举个例子,如果你每次都只是为了能增长3%的年薪,而频繁地换工作。当HR看到你的简历时,你会被认为是一个对公司没有忠心、对自己的事业没有远见的人 如何准备? 除了…

Git 快速入门

文章目录 前言一、初识Git1.Git概述2. Git的功能3. Git运行图示 二、Git下载安装三、Git 代码托管服务1.常用的 Git 代码托管服务2.使用码云代码托管服务 四、Git 常用命令1.Git 全局设置2.获取Git 仓库3.工作区、暂存区、版本库 概念4.Git 工作区中文件的两种状态5.本地仓库常…

通信算法之170: 4G LTE物理层模块链路仿真

LTE标准协议,部分算法链路仿真记录 1. Crc 卷积/Turbo编码 速率匹配 加扰 调制 OFDM调制 CP 信道模型 2. 同步 OFDM解调 解调 解扰 解速率匹配 turbo译码 Crc 3. 读者2/3代码

远程debug调试

1、背景 测试验证过程中我们肯定都遇到过线上问题本地怎么都无法复现的经历,而这一类问题往往是需要我们通过经验尝试性的修复,过程也比较痛苦且低效,没办法快速定位到问题原因。此时可以尝试使用远程debug将线上部署程序像本地调试一样验证…

【机器学习】支持向量机(上)

支持向量机(上) 目录 一、导言二、何为支持向量机三、点到平面的距离计算四、构建目标函数(支持向量机的基本型推导)五、利用 KKT 条件对目标函数进行转换1、拉格朗日乘数法的引入2、KKT 条件的引入3、松弛互补条件的引入4、总结 …

获取R、G、B通道的直方图

clc;%clc的作用就是清屏幕 clear;%clear是删除所有的变量 close all;%close all是将所有打开的图片关掉。imageimread(E:\我的桌面\MATLAB\练习\2.jpg);%绝对路径的 Rimage(:,:,1); Gimage(:,:,2); Bimage(:,:,3); hrimhist(R); hgimhist(G); hbimhist(B); x0:1:255; figure…

只需根据接口文档,就能轻松开发 get 和 post 请求的脚本,你会做吗?

一般的接口文档描述的内容: 开发get请求的脚本,接口文档的描述如下: 在loadrunner里面创建一个空脚本: 在action空白处,点击insert—>step 输入web_custom_request,双击选择该函数,填入如下几…

Android Studio实现内容丰富的安卓外卖平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号122 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.…

缓存更新策略,先更新数据库还是缓存呢?

学了这么多,相信大家对缓存更新的策略都已经有了清晰的认识。最后稍稍总结一下。 缓存更新的策略主要分为三种: Cache aside Cache aside Cache aside也就是旁路缓存,是比较常用的缓存策略。 (1)读请求常见流程 应…

CVE-2018-12613:本地文件包含

前言: phpMyAdmin是phpMyAdmin团队开发的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等。 CVE-2018-12613,这是一个在phpMyAdmin4.8.x(4.8.2之前)上发现的…

obs录制功能源码分析

录制按钮 界面文件: 主界面:OBSBasic.ui 中开始录制按钮的objectName 是 recordButton 槽函数: void OBSBasic::on_recordButton_clicked() {//1 输出模式是否被激活if (outputHandler->RecordingActive()) {bool confirm config_get_bool(GetGlo…

【Cache】Rsync远程同步

文章目录 一、rsync 概念二、rysnc 服务器部署1. 环境配置2. rysnc 同步源服务器2.1 安装 rsync2.2 建立 rsyncd.conf 配置文件2.3 创建数据文件(账号密码)2.4 启动服务2.5 数据配置 3. rysnc 客户端3.1 设置同步方法一方法二 3.2 免交互设置 4. rysnc 认…

17-Linux环境搭建——使用云服务器

目录 1.环境搭建的主要4种方式: 2.使用云服务器 2.1.腾讯云 PS:轻量应用服务器和云服务器的区别 PS:首单特惠 2.2.阿里云 2.3.其他类似 3.使用终端软件连接到 Linux 3.1.什么是终端软件? 3.2.使用 XShell PS&#xff1…

No5.精选前端面试题,享受每天的挑战和学习

文章目录 说一下虚拟dom,结合vue和react白屏问题怎么优化java和javascript的区别Vue3.0和2.0对比,哪些方面更加出色 说一下虚拟dom,结合vue和react 虚拟DOM(Virtual DOM)是JavaScript框架如Vue和React中的一个重要概念…

CSDN博客运营团队2023年H1总结

一、运营工作的指导思路 CSDN的核心价值之一是帮助开发者/技术人快速的学习成长和解决技术问题。这个核心价值的建立离不开无数开发者的无私贡献,而运营工作的核心就是要保证这个价值链不断放大:让内容贡献者体验更好,付出有回报&#xff0c…