matlab使用教程(80)—修改图形对象的透明度

1.更改图像、填充或曲面的透明度

        此示例说明如何修改图像、填充或曲面的透明度。

1.1坐标区框中所有对象的透明度

        透明度值称为 alpha 值。使用 alpha 函数设置当前坐标区范围内所有图像、填充或曲面对象的透明度。指定一个介于 0(完全透明)和 1(完全不透明)之间的透明度值。

t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);

figure
patch(x,y,'r')
patch(x+0.8,y,'g')
patch(x+0.4,y+0.8,'b')
axis square tight 
alpha(0.3)

Figure contains an axes object. The axes object contains 3 objects of type patch.

1.2个别曲面的透明度

        曲面的透明度由其 AlphaData 属性定义。将 alpha 数据设置为用于指定曲面的每个顶点透明度的标量值或值矩阵。FaceAlpha 属性指示如何从顶点透明度确定曲面透明度。

[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

s2.AlphaData = gradient(Z);    
s2.FaceAlpha = 'flat';

Figure contains an axes object. The axes object contains an object of type surface.

1.3个别图像的透明度

        与曲面一样,图像的透明度也由其 AlphaData 属性定义。对于图像,将 alpha 数据设置为用于指定图像数据的每个元素透明度的标量值或值矩阵。

        例如,使用透明度覆盖两个图像。首先,显示地球的图像。

earth = imread('landOcean.jpg');
image(earth)    
axis image

Figure contains an axes object. The axes object contains an object of type image.

        然后,使用透明度将云图层添加到地球图像。

clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold on

im = image(clouds);
im.AlphaData = max(clouds,[],3);    
hold off

Figure contains an axes object. The axes object contains 2 objects of type image.

1.4个别填充的透明度

        填充的透明度由其 FaceAlpha 和 FaceVertexAlphaData 属性定义。若要在整个填充上实现单一的透明度,请将 FaceVertexAlphaData 设置为一个介于 0(完全透明)和 1(完全不透明)之间的常量,并将 FaceAlpha 属性设置为 'flat'

cla
p1 = patch(x,y,'r');
axis square tight
p1.FaceVertexAlphaData = 0.2;
p1.FaceAlpha = 'flat' ; 

Figure contains an axes object. The axes object contains an object of type patch.

        若要在整个填充上实现可变的透明度,请将 FaceVertexAlphaData 设置为用于指定填充的每个顶点或每个面的透明度的值矩阵。然后,通过 FaceAlpha 属性指示如何使用 FaceVertexAlphaData 确定面的透明度。如果为顶点指定了 alpha 数据,则必须将 FaceAlpha 设置为 'interp'

p1.FaceVertexAlphaData = x';
p1.FaceAlpha = 'interp';

Figure contains an axes object. The axes object contains an object of type patch.

1.5包含纹理映射的透明度

        纹理映射将二维图像映射到三维曲面上。通过将 CData 属性设置为图像数据并将 FaceColor 属性设置为 'texturemap',可将图像映射到曲面上。

        此示例创建地球和云的三维视图。它创建球形表面,并使用纹理映射将地球和云的图像映射到曲面上。

[px,py,pz] = sphere(50);

sEarth = surface(py, px ,flip(pz));
sEarth.FaceColor = 'texturemap';
sEarth.EdgeColor = 'none';
sEarth.CData = earth;
hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02); 

sCloud.FaceColor = 'texturemap'; 
sCloud.EdgeColor = 'none';
sCloud.CData = clouds;

sCloud.FaceAlpha = 'texturemap';
sCloud.AlphaData = max(clouds,[],3);
hold off
view([80 2]) 
daspect([1 1 1])
axis off tight

        此示例中使用的图像来自 Visible Earth。

        致谢:美国国家航空航天局戈达德太空飞行中心图像,由 Reto Stöckli 拍摄(陆地表面、浅水、云)。Robert Simmon 提供增强效果(海洋颜色、合成、三维地球仪、动画)。数据和技术支持:MODIS 土地组;MODIS 科学数据支持团队;MODIS 大气组;MODIS 海洋组附加数据:美国地质调查局 EROS 数据中心(地貌);美国地质勘探局地球遥感弗拉格斯塔夫球场中心(南极洲);美国国防气象卫星计划(城市灯光)。

2.修改 alphamap

        每个图窗都有一个关联的 alphamap,它是一组 0 到 1 之间的向量值。默认的 alphamap 包含 0 到 1 范围内的 64 个线性变化值。可以使用图窗的 Alphamap 属性或使用 alphamap 函数来查看或修改 alphamap。

2.1默认的 alpha 映射

        默认的 alphamap 包含 0 到 1 范围内的 64 个线性变化值,如下图所示。

am = get(gcf,'Alphamap');
plot(am)

        此 alphamap 将最低的 alpha 数据值显示为完全透明,将最高的 alpha 数据值显示为完全不透明。

        alphamap函数可以创建一些有用的预定义 alphamap,还可以修改现有 alphamap。例如,

figure;
alphamap('vup')

        将图窗的 Alphamap 属性设置为值先增后减的 alphamap:

am = get(gcf,'Alphamap');
plot(am)

        您可以使用 increase 或 decrease 选项改变这些值。例如,

alphamap('increase',.4)

        将图窗当前 alphamap 中的所有值加上 0.4。重新绘制 'vup' alphamap 可以看出变化。这些值限制在 [0 1] 的范围内。

am = get(gcf,'Alphamap');
plot(am)

2.2示例 - 修改 alphamap

        此示例使用切片平面来查看三维体数据。切片平面使用颜色数据作为 alpha 数据,并使用递减的 alphamap(值范围从 1 到 0):

  1. 通过计算一个包含三个变量的函数来创建三维体数据。

    [x,y,z] = meshgrid(-1.25:.1:-.25,-2:.2:2,-2:.1:2);
    v = x.*exp(-x.^2-y.^2-z.^2);
  2. 创建切片平面,将 alpha 数据设置为等于颜色数据,并指定 FaceColor 和 FaceAlpha 插值。

    h = slice(x,y,z,v,[-1 -.75 -.5],[],[0]);
    set(h,'EdgeColor','none',...
    'FaceColor','interp',...
    'FaceAlpha','interp')
    alpha('color')
  3. 使用不透明度线性递减的 alphamap 并通过将 alphamap 中的每个值增加 0.1 来实现所需的透明度。指定 hsv 颜色图。

    alphamap('rampdown')
    alphamap('increase',.1)
    colormap hsv

        此 alphamap 用最小的透明度显示函数的最小值(接近零),用最大的透明度显示函数的最大值。这使您能够透视切片平面,同时保留了零附近的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第19讲:自定义类型:结构体

目录 1.结构体类型的声明1.1 结构体回顾1.1.1 结构的声明 特殊的结构声明1.3 结构的⾃引⽤ 2. 结构体内存的对齐2.2 为什么存在内存对⻬?2.3 修改默认对⻬数 3. 结构体传参4. 结构体实现位段4.1 什么是位段4.2 位段的内存分配4.3 位段的跨平台问题4.5 位段使⽤的注意事项 正文…

目标检测——无人机垃圾数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

【ONE·MySQL || 事务】

总言 主要内容:介绍事务。理解事务概念(为什么存在),理解事务的四种属性(原子性、持久性、隔离性、一致性),理解事务的隔离级别(四种隔离级别,读写并发说明)。…

Java zip解压时候 malformed input off : 0, length : 1

public static void unzip(String zipFilePath, String destDirectory) {File dir new File(destDirectory);// 如果目标文件夹不存在,则创建if (!dir.exists()) {dir.mkdirs();}byte[] buffer new byte[1024];try (ZipInputStream zis new ZipInputStream(new F…

C++小病毒

C小病毒&#xff08;注&#xff1a;对电脑无过大伤害&#xff09; 短短行&#xff0c;创造奇迹&#xff01; 把这个文件命名为virus.exe就可以使用了。 #include<bits/stdc.h> #include<windows.h> using namespace std; int main() {HWND hwnd GetForegroundW…

梳理 JavaScript 中空数组调用 every方法返回true 带来惊讶的问题

前言 人生总是在意外之中. 情况大概是这样的. 前两天版本上线以后, 无意中发现了一个bug, 虽然不是很大, 为了不让用户使用时感觉到问题. 还是对着一个小小的bug进行了修复, 并重新在上线一次, 虽然问题不大, 但带来的时间成本还是存在的. 以及上线后用户体验并不是很好. 问题…

OpenFeign微服务调用组件使用

前言&#xff1a;OpenFeign是可以跨服务、跨进程的调用方式。 什么是Feign Feign是Netflix开发的声明式、模版化的HTTP客户端。 优势: Feign可以做到使用 HTTP 请求远程服务时就像调用本地方法一样的体验&#xff0c;开发者完全感知不到这是远程方法&#xff0c;更感知不到这…

一个典型的分布式缓存系统是什么样的?no.32

分布式 Redis 服务 由于本课程聚焦于缓存&#xff0c;接下来&#xff0c;我将以微博内的 分布式 Redis 服务系统为例&#xff0c;介绍一个典型的分布式缓存系统的组成。 微博的 Redis 服务内部也称为 RedisService。RedisService 的整体架构如图所示。主要分为Proxy、存储、集…

使用第三方的PyCharm开发工具

目录 PyCharm下载 PyCharm安装 运行PyCharm 创建工程目录 编写“hello world”程序 在同一个工程下创建多个程序文件 运行程序的多种方法 保存程序 关闭程序或工程 删除程序 打开最近的工程 调试断点 熟悉PyCharm开发环境 设置Python解析器 输出彩色控制台文字及…

简易Docker磁盘使用面板Doku

这个项目似乎有 1 年多没更新了&#xff0c;最后发布版本的问题也没人修复&#xff0c;所以看看就行&#xff0c;不建议安装 什么是 Doku &#xff1f; Doku 是一个简单、轻量级的基于 Web 的应用程序&#xff0c;允许您以用户友好的方式监控 Docker 磁盘使用情况。Doku 显示 D…

一文读懂数电票,理解数电票与版式文件的关系

发票总的趋势是无纸化&#xff08;电子发票&#xff09;&#xff0c;方便计算机处理&#xff1b;最终达到节省人力物力的目的。国内在这方面进行了多年的探索&#xff0c;主要经历了以下几个阶段。 pdf格式的电子发票。 ofd格式电子发票&#xff0c;采用国密算法加密。 采用xml…

前端 CSS 经典:元素倒影

前言&#xff1a;好看的元素倒影&#xff0c;可以通过-webkit-box-reflect 实现。但有兼容问题&#xff0c;必须是 webkit 内核的浏览器&#xff0c;不然没效果。但是好看啊。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"&g…

如何快速申请免费单域名SSL证书

申请免费的单域名SSL证书通常涉及以下几个步骤&#xff0c;虽然具体细节可能会根据不同的证书颁发机构(CA)有所差异。以下是通用的申请流程&#xff1a; 1.选择证书颁发机构&#xff1a; 访问提供免费单域名SSL证书的证书颁发机构网站&#xff0c;例如JoySSL等。 2.注册账号…

软考 软件设计师 场景分析题 速成篇

文章目录 试题一&#xff1a;数据流图&#x1f496; 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 &#x1f4da; 例题&#xff08;1&#xff09;实体名称&#xff08;2&#xff09;数据存储名称&#xff08;3&#xff09;数据流① 父子图平衡② 加工有输入有输出④ 数…

数据库同步软件,天不生PanguSync万古如长夜

在信息时代的海洋中&#xff0c;数据是那永不熄灭的灯塔&#xff0c;照亮了科技发展的航道。然而&#xff0c;随着数据的膨胀和应用场景的多样化&#xff0c;如何确保这些宝贵资源在不同平台、不同设备间实时更新、保持一致性&#xff0c;便成了一道亟待解决的难题。于是&#…

redis常用场景——缓存登录信息

场景重现 当一个boot程序开启拦截器&#xff0c;那么每次拦截请求都需要通过 mysql 查询用户信息&#xff0c;这样会给服务器带来很大的负担&#xff0c;此时可以使用 redis 作为中间件&#xff0c;缓存登录信息 优点&#xff1a; redis 内存读写&#xff0c;速度快 没使用re…

Linux网络编程(socket)

1. 概念 局域网和广域网 局域网&#xff1a;局域网将一定区域内的各种计算机、外部设备和数据库连接起来形成计算机通信的私有网络。广域网&#xff1a;又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程公共网络。 IP&#xff08;Internet Protocol&a…

【计算机网络原理】对传输层TCP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【B站 heima】小兔鲜Vue3 项目学习笔记Day04

文章目录 二级分类1.整体认识和路由配置2.面包屑导航功能实现3. 基础商品列表实现4. 定制路由滚动行为 详情页1.整体认识和路由配置2.基础数据渲染3.热榜区域实现4. 图片预览组件封装5.放大镜-滑块跟随移动左侧滑块跟随鼠标移动放大镜-大图效果 6. props适配7. SKU组件熟悉使用…

vue3项目+TypeScript前端项目 ———— elemnet-plus,svg图标配置,sass,mock数据

一.集成element-plus 官网地址 安装 pnpm install element-plus 引入 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.…