MATLAB三维曲面作图(三)特殊效果的绘图(灯光)

news2024/9/20 22:46:10

首先,我们来绘制一个海螺的复杂图形

close all
t = linspace(0,2*pi,512);
[u v] = meshgrid(t);
a = -0.4;
b = 0.5;
c = 0.1;
n = 3;
x = (a*(1-v/(2*pi)).*(1+cos(u))+c).*cos(n*v);
y = (a*(1-v/(2*pi)).*(1+cos(u))+c).*sin(n*v);
z = b*v/(2*pi)+a*(1-v/(2*pi)).*sin(u);
surf(x,y,z,z)
axis off
axis equal
colormap(hsv(1024))
shading interp
material shiny
%lighting phong
camlight('left','infinite')
view([-160 25])

结果:

这里我们进行了一系列设置:

axis off:将坐标轴关闭,只显示曲面

axis equal:坐标轴的长度相同

shading interp:上一篇文章中已经讲过,这个语句的作用是去除黑色的边界线并将颜色的变化更自然(连续过渡)

material shiny:材料设置为镜面反射

在MATLAB官方网站上有对这个函数的进一步解释:

% material %设置 surface 和 patch 对象的光照特征。
% material shiny %使得对象具有相对于漫反射和环境光更高的镜面反射,镜面反射光的颜色仅取决于光源的颜色。
% material dull %设置反射属性,使得对象反射更多的漫射光并且没有镜面反射光,但反射光的颜色仅取决于光源。
% material metal %设置反射属性,使得对象具有非常高的镜面反射、非常低的环境和漫反射,反射光的颜色同时取决于光源和对象的颜色。
% material([ka kd ks]) %设置对象的环境/漫反射/镜面反射强度。

lighting phong语句表示引入冯氏光照模型

重新绘制图形

%lighting phong

将这个语句注释,可以观察亮点附近的图形:

 出现了明显的波纹,这是因为在不设置光照模型的情况下,默认的光照只是引入了光源,不能根据物体的实际空间形状模拟出光照效果,可以用以下语句进行对比:

sphere
axis equal
lightangle(-45,30)

结果:

引入lighting phong函数:

figure
sphere
axis equal
lightangle(-45,30)
lighting phong

结果:

 

 camlight('left','infinite')语句创造了一个光源:

% camlight('headlight') %在相机位置创建光源。
% camlight('right') %在相机右上方创建光源。
% camlight('left') %在相机左上方创建光源。

参考:

《高等光学仿真——光波导、激光》

MATLAB官网

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

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

相关文章

RabbitMQ详解(五):过期时间TTL、死信队列、磁盘监控

过期时间TTL(Time To Live) 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。 目前有两种方法可以设置 第一种方法是通过队列属性设置,队列中所有消息都有…

App报毒-Google Play保护机制,已屏蔽不安全的应用

一、概述 解决安卓app在海外国际版本如:华为、OPP/VIVO、小米和荣耀报毒问题.触发Google Play保护机制. 安卓app报毒爆红,vivo手机爆红,oppo小米华为荣耀手机报毒,手机安装app时提示报毒,有的app是刚打包出来、有的是用…

Cocos Creator 3.7.3 正式上线,渲染管线和算法持续更新

Cocos Creator 3.7.3 正式发布。该版本对近日用户反馈的一系列关键性问题进行了集中修复,也对一部分性能进行了优化,提升了用户体验,建议所有 v3.x 用户升级。 Engine Features Render Graph 自定义渲染管线支持 GLES 后端Deprecate addRast…

【C++】五一假期,我学会了C++类和对象 ( 看完这篇你也能学会 ~ )

文章目录 ☑️前言✅类和对象【🏆上篇🏆】一. 面向过程和面向对象初步认识二. 与类的完美邂逅❤️1. 类的引入2. 类的定义 三. 增进与类的距离❤️1. 类的访问限定符及封装1.1. 访问限定符1.2. 封装【⭐重大思想⭐】 2. 类的作用域3. 类的实例化 四. 类对…

专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

当前互联网流量红利已经逐渐消失,营销同质化愈发严重。在这样的背景下,催生了以为元宇宙 焦点的虚拟产业经济。元宇宙在各行各业中以不同形式快速萌生、成长,呈现出多元化的应用场景。尤其是众多品牌,将元宇宙视为品牌建设与营销新…

JavaScript - 进阶+高级(笔记)

前言 给孩子点点关注吧!😭 本篇文章主要记录以下几部分: 进阶: 作用域;函数进阶(函数提升、函数参数、箭头函数);解构赋值;对象进阶(构造函数、实例成员、静…

算法记录 | Day57 动态规划

647.回文子串 思路: 1.确定dp数组(dp table)以及下标的含义: 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否…

【前端】实际开发案例

文章目录 1. 侧边栏2. 调查报告3. 显示隐藏遮罩案列4. 鼠标经过,图片放大5. 奔跑的熊6. 旋转木马7. 百度换肤8. tab栏切换9. 下拉菜单10. 发布留言11. 动态生成表格12. 图片跟随鼠标移动13. 按键输入内容14. 定时器实现15. 发送短信16. 5秒后跳转页面17. 获取URL参数…

Ajax + axios + 常用状态码(笔记)

Ajax 求关注😭 一、客户端与服务器相关的概念 1.1 客户端与服务器 1.1.1 服务器 服务器: 负责 存放 和 对外提供 资源 的 电脑本质: 就是一台电脑,只不过 性能 要比别的电脑 高 1.1.2 客户端 客户端: 在上网过程…

【HttpRunner3】一分钟生成测试用例

【大家好,我是爱干饭的猿,本文重点介绍HttpRunner概念、设计思想和理念、环境搭建、一分钟生成测试用例和脚手架快速创建。 后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 上…

成都爱尔李晓峰主任:眼睛干到发出求救信号,快注意!

眼睛总感觉痒痒的,时不时干涩、酸胀、畏光? 它在提醒你,它太干了救救它! 干眼如何判断? 干眼症是由于泪液的质和量异常或者泪液的流体动力学障碍而导致眼表无法保持湿润的一种眼病。会发生眼睛干涩、酸胀、畏光、灼热感、异物感、看东西容易…

Packet Tracer 模拟配置AAA认证

Packet Tracer 模拟配置AAA认证 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 F0/0 172.16.10.1 255.255.255.0 不适用 S0/3/0 10.1.1.1 255.255.255.0 不适用 F0/1 192.168.1.1 255.255.255.0 不适用 R2 F0/0 192.168.2.1 255.255.255.0 …

【云原生】--- Kubernetes原理

Kubernetes原理 一、Kubernets是什么?1、K8s由来2、K8S的作用 二、为什么需要Kubernetes,它能做什么?三、Kubernetes的特性四、Kubernetes架构1、Kubernetes工作流程2、创建pod流程 一、Kubernets是什么? Kubernetes的缩写为&…

Aztec 征求 Rollup Sequencer去中心化提案

1. 引言 前序博客: Rollup去中心化Rollup Decentralization Aztec Rollup中Sequencer角色的主要职责为: 1)从mempool中选取pending交易2)将选中的pending交易排序打包到L2区块中3)验证所有private交易proof以检查其…

(c语言1)阶乘求和

输入格式 求Sn1!2!3!4!5!…n!之值&#xff0c;其中n是一个数字(n不超过20)。 输入格式 n 输出格式 Sn的值 样例输入 5 样例输出 153 题解 然后直接先上题解 #include<stdio.h> int main() {int n,a1;long long sum0,m1; //为这是阶乘求和&#xff0c;一般的i…

第五十三章 Unity 移动平台输入(上)

在移动设备上&#xff0c;Input 类提供对触摸屏、加速度计和地理/位置输入的访问。这里我们简单介绍Input类对于触摸屏的支持。Input.Touches是一个触摸数组&#xff0c;每个数组元素代表着手指在屏幕上的触碰状态Input.Touch。Input.Touch 数据结构表示&#xff1a; fingerId…

带你了解新兴安全技术

随着科技的不断发展&#xff0c;生物识别技术已经成为了一种重要的安全技术。生物识别技术可以通过对个人身份的验证和认证来防止身份盗窃和其他形式的安全威胁&#xff0c;因此越来越多的组织和企业开始使用这种技术来提高安全性。随着科技的不断发展&#xff0c;生物识别技术…

CTFHub-Git泄露-Log

前言 git是一个版本控制工具&#xff0c;通过泄露的.git文件可还原代码 题目如下 wp 1. dirsearch目录扫描 发现存在git泄露&#xff0c;根据提示下载对应git利用工具GitHack&#xff0c;这个工具的特点是能还原历史版本 2. 使用工具下载源码 tips: 最好在linux中操作&…

springboot社区物业管理系统

分享一个springboot社区物业管理系统&#xff0c;需要的私信 项目简介 本系统涉及到的技术主要如下 推荐环境配置&#xff1a;eclipse/idea jdk1.8 maven mysq 前端技术&#xff1a;Layui&#xff0c;Ajax&#xff0c;Json 后端技术&#xff1a;SpringBoot 2.3.0&#xff0c;…

day4-字符设备驱动基础上_基础框架

大纲&#xff1a; 设备分类 申请和注销设备号 函数指针复习 注册字符设备 字符设备驱动框架解析 读操作实现 写操作实现 ioctl操作实现 printk 多个次设备的支持 一、Linux内核对设备的分类 linux的文件种类&#xff1a; -&#xff1a;普通文件 (文件内容、文件名、…