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 onim = 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 用最小的透明度显示函数的最小值(接近零),用最大的透明度显示函数的最大值。这使您能够透视切片平面,同时保留了零附近的数据。

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

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

相关文章

15.回归问题

回归问题是机器学习领域中的核心问题之一,它旨在通过拟合数据点来建立数学模型,以预测因变量的值。回归问题不仅广泛应用于金融、医疗、工程等领域,也是数据分析和机器学习算法研究的重要基础。本文将深入探讨回归问题的基本概念、数学原理、…

软件设计师-上午题-计算题汇总

一、存储系统 - 存储容量计算(字节编址、位编址、芯片个数) 内存地址是16进制 内存地址编址的单位是Byte,1K1024B 1B 8 bit 1.计算存储单元个数 存储单元个数 末地址 - 首地址 1 eg. 按字节编址,地址从 A4000H 到 CBFFFH&…

ubuntu20.04 10分钟搭建无延迟大疆无人机多线程流媒体服务器

1.使用效果 无人机画面 2.服务器视频端口 3.使用教程 3.1.下载ubuntu对应软件包:系统要求ubuntu16以上 3.2修改端口(config.xml文件) 3.3启动服务 目录下输入:终端启动:./smart_rtmpd 后台启动:nohup ./…

安卓手机APP开发__平台的架构

安卓手机APP开发__平台的架构 目录 概述 安卓软件栈 Linux内核 硬件抽象层(HAL) 安卓运行时 原生的C/C代码库 Java API框架 系统APP 概述 安卓是一个开源的,基于Linux的软件栈,它创建一个设备和形式因素的很宽的矩阵。 下图展示了安卓平台的所有…

Kubernetes的灵魂核心:kube-scheduler

Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。在Kubernetes集群中,kube-scheduler是一个至关重要的组件,它负责将Pod(Kubernetes中的最小部署单元&#xff0…

2024年电工杯高校数学建模竞赛(A题) 建模解析| 园区微电网风光储协调优化配置 |小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200人完成了建模与思路的构建的处理了~ 本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决电工杯的难关呀。 完整内容可…

Anti Desgin Vue 实现 表格可编辑、新增、删除功能

1、效果图 新增&#xff1a; 删除&#xff1a; 修改&#xff1a; 代码&#xff1a; <template><div><button click"add">添加</button><span style"margin-left: 8px"><template v-if"hasSelected">{…

C++语言基础光速入门笔记

目录 从C到CC和C语言的关系C编译器C面向对象程序设计标准库ANSI 标准C的使用场景标准化 安装 GNU 的 C/C 编译器g 应用说明g 常用命令选项 C 基本语法C 关键字三字符组 C 数据类型基本的内置类型typedef 声明枚举类型类型转换静态转换&#xff08;Static Cast&#xff09;动态转…

沃通国密根证书入根红莲花浏览器,共建国密HTTPS应用生态

近日&#xff0c;沃通CA与海泰方圆红莲花安全浏览器进一步达成合作&#xff0c;沃通新增国密根证书入根红莲花安全浏览器。此次入根合作&#xff0c;标志着沃通国密数字证书产品兼容性再次得到提升&#xff0c;进一步夯实国密应用根基。 沃通CA入根红莲花浏览器&#xff0c;自动…

手机端如何访问本地vue+vite项目,实现实时调试?

一、应用场景 h5&#xff08;vuevite&#xff09;嵌入app后&#xff0c;出现某种问题时&#xff0c;需要每次发布坏境后&#xff0c;才能才看效果&#xff0c;这种来回很耗时间&#xff0c;本文章在于解决手机端直接访问本地启动应用项目&#xff0c;无需重复发布坏境 二、实…

四川易点慧电商抖音小店未来商业新蓝海

在数字经济的浪潮中&#xff0c;电商行业日新月异&#xff0c;不断涌现出新的商业模式和平台。四川易点慧电商抖音小店作为其中的佼佼者&#xff0c;以其独特的商业模式和广阔的市场前景&#xff0c;正成为越来越多创业者和商家的首选。本文将从多个角度探讨四川易点慧电商抖音…

docker 指定jdk11镜像执行jar

dockerfile :下载jdk11 并将上传的jar 放入jdk11容器/root&#xff0c;改名为app.jar vi dockerfile 。。。。内容见下图 # 构建jdk11镜像 docker build -t demo . # 也可以通过jdk11镜像&#xff08;前提有jdk11镜像&#xff09;外挂载目录方式运行jar docker run --name d…

惠普电脑怎么进入bios?图文教程助你轻松上手!

进入BIOS&#xff08;基本输入/输出系统&#xff09;是在电脑启动时进行硬件初始化和设置的重要步骤之一。对于惠普&#xff08;HP&#xff09;电脑用户来说&#xff0c;了解如何进入BIOS是解决一些硬件和系统问题的关键。本文将介绍惠普电脑怎么进入bios的三种方法&#xff0c…

java学习和项目总结

java&#xff1a; JDK/JRE/JVM三者的关系 JVM&#xff1a;JVM是java进行编译的虚拟机&#xff0c;是Java 能够跨平台运行的核心 。 所有的java程序会首先被编译为.class的类文件&#xff0c;这种类文件可以在虚拟机上执行。也就是说class文件并不直接与机器的操作系统交互&a…

Day24:Leetcode:235. 二叉搜索树的最近公共祖先 + 701.二叉搜索树中的插入操作 + 450.删除二叉搜索树中的节点

LeetCode&#xff1a;235. 二叉搜索树的最近公共祖先 解决方案&#xff1a; 1.思路 对于当前节点x&#xff0c;如果x比p和q的值都大&#xff0c;说明&#xff0c;p和q在x的右子树里面&#xff0c;那么去x的右子树里面去寻找&#xff1b;对于当前节点x&#xff0c;如果x比p和…

Docker 开启 SSL 验证

最近看 OJ 项目的远程开发阶段&#xff0c;然后踩坑踩了 2 天&#x1f602; Docker 版本&#xff1a;在 CentOS 安装 sudo yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io Client: Docker Engine - CommunityVersion: 20.10.9API version: …

ESP-IDF使用Button组件实现按键检测的功能

ESP32使用Button组件实现按键检测的功能 ESP-IDF 组件管理LED 组件简介测试button组件写在最后 ESP-IDF 组件管理 IDF 组件管理器工具用于下载 ESP-IDF CMake 项目的依赖项&#xff0c;该下载在 CMake 运行期间自动完成。IDF 组件管理器可以从自动从组件注册表 或 Git 仓库获取…

vue.js基础组件4--下

1.动态组件 1.定义动态组件 利用动态组件可以动态切换页面中显示的组件。使用<component>标签可以定义动态组件&#xff0c;语法格式如下。 <component is"要渲染的组件"></component>上述语法格式中&#xff0c;<component>标签必须配合i…

Java IO与NIO来Copy文件的四种方法实现以及性能对比

使用Java的IO与NIO来Copy文件的四种方法实现以及性能对比 FileCopyRunner接口&#xff0c;定义了Copy文件的接口&#xff0c;等下在测试类中使用匿名内部类来实现。 package nio.channel;import java.io.File;public interface FileCopyRunner {void copyFile(File source , …

【C语言】明析部分C语言内存函数

目录 1.memcpy 2.memmove 3.memset 4.memcmp 以下都是内存函数&#xff0c;作用单位均是字节 1.memcpy memcpy是C/C语言中的一个内存拷贝函数&#xff0c;其原型为&#xff1a; void* memcpy(void* dest, const void* src, size_t n);目标空间&#xff08;字节&#xff09…