MATLAB|不给糖果就捣蛋

news2024/11/25 0:27:43

目录

扫一扫关注公众号

效果图

代码

绘制南瓜

绘制无脸男小鬼

其中绘制风车代码:

其中 EllipsePlotter类函数代码如下

属性 (properties)

方法 (methods)


扫一扫关注公众号

效果图

图片

图片

代码

绘制南瓜

clc;clear;close all;
[X,Y,Z]=sphere(200);
R=1+(-(1-mod(0:.1:20,2)).^2)/15;
surf(R.*X,R.*Y,(.8+(0-(1:-.01:-1)'.^4)*.2).*Z.*R,'FaceC',[ 1 0.4588 0.0941],'EdgeC','n')
axis('equal','off')
material([ .6, .9, .3, 2, .5 ])
lighting g
camlight

图片

绘制无脸男小鬼

clc;clear;close all
fig=figure('Position',[476 224 672 642]);
ax=gca;
ax.Color='none';
ax.YLim=[0,15];
ax.XLim=[-3,14];
ax.Box='off';
ax.XColor='none';
ax.YColor='none';
axis equal;
hold on
pause(0.1)
[X, Y] = meshgrid(linspace(1, 0, 200));
image([-3, 14], [0, 15], Y*255);
colormap(gray)
pause(0.1)
ellipse = EllipsePlotter('a', 4, 'b', 6, 'x', 5.4, 'y', 6.2, ...
    'plotType', 'fill', 'fillColor', [.4,.4,.4], 'rotation', 0, ...
    'angleRange',[-25,205],'alpha',1,'lineWidth',6,'lineColor',[1,1,1]*0.9);
ellipse.plotEllipse();
d=[0 -0.3 -0.4 -0.6 -0.4 -0.3 0];
for i=1:7
    ellipse = EllipsePlotter('a',1.2, 'b', 3.3, 'x', 2.7+(i-1)*0.9, 'y', 5.5+d(i), ...
        'plotType', 'fill', 'fillColor',[.4,.4,.4], 'rotation', 0, ...
        'angleRange',[-200,20],'alpha',1,'lineWidth',6,'lineColor','none');
    ellipse.plotEllipse();
end
% 脸
pause(0.3)
FaceColor=[1.0 0.9627 0.9235];
ellipse = EllipsePlotter('a',3, 'b', 2.8, 'x',5.4, 'y',9, ...
    'plotType', 'fill', 'fillColor',FaceColor, 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
% 眉毛、腮红、嘴
pause(0.3)
ellipse = EllipsePlotter('a',0.3, 'b',1, 'x',3.9, 'y',10.2, ...
    'plotType', 'fill', 'fillColor',[1.0 0.65 0.63], 'rotation', 15, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();

ellipse = EllipsePlotter('a',0.3, 'b',1, 'x',6.8, 'y',10.4, ...
    'plotType', 'fill', 'fillColor',[1.0 0.65 0.63], 'rotation', 160, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',0.3, 'b',1, 'x',7, 'y',7.8, ...
    'plotType', 'fill', 'fillColor',[1.0 0.65 0.63], 'rotation', 0, ...
    'angleRange',[-200,20],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',0.3, 'b',1, 'x',4, 'y',7.6, ...
    'plotType', 'fill', 'fillColor',[1.0 0.65 0.63], 'rotation', -10, ...
    'angleRange',[-200,20],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
pause(0.3)
ellipse = EllipsePlotter('a',.84, 'b',1.1, 'x',3.9, 'y',8.9, ...
    'plotType', 'fill', 'fillColor',FaceColor, 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',.84, 'b',1.2, 'x',7, 'y',9, ...
    'plotType', 'fill', 'fillColor',FaceColor, 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
%嘴巴
pause(0.3)
ellipse = EllipsePlotter('a',.3, 'b',.5, 'x',5.3, 'y',7.9, ...
    'plotType', 'fill', 'fillColor',[0.9 0 0], 'rotation', 0, ...
    'angleRange',[-180,0],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();

ellipse = EllipsePlotter('a',.5, 'b',.25, 'x',5.3, 'y',8, ...
    'plotType', 'fill', 'fillColor',FaceColor, 'rotation', 0, ...
    'angleRange',[-180,0],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
%眼袋
pause(0.2)
ellipse = EllipsePlotter('a',0.3, 'b',0.1, 'x',3.9, 'y',8.2, ...
    'plotType', 'fill', 'fillColor',[1 1 1]*0.8, 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',0.3, 'b',0.11, 'x',7, 'y',8.2, ...
    'plotType', 'fill', 'fillColor',[1 1 1]*0.8, 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
% 眼睛
pause(0.3)
ellipse = EllipsePlotter('a',0.7, 'b',0.6, 'x',3.9, 'y',9.1, ...
    'plotType', 'fill', 'fillColor',[0 0 0], 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',0.7, 'b',0.6, 'x',7, 'y',9.1, ...
    'plotType', 'fill', 'fillColor',[0 0 0], 'rotation', 0, ...
    'angleRange',[0,360],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
% 心
pause(0.3)
t=0:0.025:2*pi;
x=(16*sin(t).^3)/10+5.5;
y=(13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t))/10+4.8;
fill(x,y,'r','edgecolor','r');
%风车
pause(0.3)
hold on
plot([0 0.2],[9.5 7],'LineWidth',3,'Color',[0,0,1,0.5])
 colors = {'r', 'g', 'b', 'y';'c', 'm', 'g','c'};
L = 0.8;
center = [0,9.5]; % 定义风车的圆心
T=[0 pi/3];
for j = 1:4
    for i=1:2
        theta1 = (j-1) * pi/2+T(i);
        theta2 = theta1 + pi/2;
        P0 = center;
        P1 = center + L * [cos(theta1), sin(theta1)];
        P2 = center + L * [cos(theta2), sin(theta2)];
        Psharp = (P1 + P2) / 2;
        fill([P0(1), P1(1), Psharp(1)], [P0(2), P1(2), Psharp(2)], colors{i,j},'EdgeColor','none','FaceAlpha',0.8);
    end
end
%手
pause(0.3)
ellipse = EllipsePlotter('a',3, 'b',0.8, 'x',8.5, 'y',6, ...
    'plotType', 'fill', 'fillColor',[.4 .4 .4], 'rotation', -30, ...
    'angleRange',[100,250],'alpha',1,'lineWidth',2,'lineColor',[1,1,1]*0.6);
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',3, 'b',0.8, 'x',8.7, 'y',6.1, ...
    'plotType', 'fill', 'fillColor',[.4 .4 .4], 'rotation', -30, ...
    'angleRange',[100,250],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
pause(0.3)
ellipse = EllipsePlotter('a',3, 'b',0.8, 'x',2.6, 'y',6, ...
    'plotType', 'fill', 'fillColor',[.4 .4 .4], 'rotation',20, ...
    'angleRange',[100,270],'alpha',1,'lineWidth',2,'lineColor',[1,1,1]*0.6);
ellipse.plotEllipse();
ellipse = EllipsePlotter('a',3, 'b',0.8, 'x',2.7, 'y',5.95, ...
    'plotType', 'fill', 'fillColor',[.4 .4 .4], 'rotation',20, ...
    'angleRange',[100,270],'alpha',1,'lineWidth',2,'lineColor','none');
ellipse.plotEllipse();
pause(0.3)
tex=sprintf('不给糖果\n  就捣蛋');
text(8,13,tex,'FontSize',30,'FontWeight','bold','Color','w');

图片

其中绘制风车代码:

hold on
plot([0 0.2],[9.5 7],'LineWidth',3,'Color',[0,0,1,0.5])
 colors = {'r', 'g', 'b', 'y';'c', 'm', 'g','c'};
L = 0.8;
center = [0,9.5]; % 定义风车的圆心
T=[0 pi/3];
for j = 1:4
    for i=1:2
        theta1 = (j-1) * pi/2+T(i);
        theta2 = theta1 + pi/2;
        P0 = center;
        P1 = center + L * [cos(theta1), sin(theta1)];
        P2 = center + L * [cos(theta2), sin(theta2)];
        Psharp = (P1 + P2) / 2;
        fill([P0(1), P1(1), Psharp(1)], [P0(2), P1(2), Psharp(2)], colors{i,j},'EdgeColor','none','FaceAlpha',0.8);
    end
end

图片

其中爱心代码:

t=0:0.025:2*pi;
x=(16*sin(t).^3)/10+5.5;
y=(13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t))/10+4.8;
fill(x,y,'r','edgecolor','r');

图片

其中 EllipsePlotter类函数代码如下

classdef EllipsePlotter
    properties
        a = 1;
        b = 1;
        x = 0;
        y = 0;
        angleRange = [0 2*pi];
        rotation = 0;
        lineColor = 'b';
        lineWidth = 1;
        plotType = 'plot';
        fillColor = 'r';
        alpha = 1;
    end
    methods
        function obj = EllipsePlotter(varargin)
            % Constructor
            if nargin > 0
                for i = 1:2:nargin
                    obj.(varargin{i}) = varargin{i+1};
                end
            end
            startRadian = obj.angleRange(1) * pi / 180;
            endRadian = obj.angleRange(2) * pi / 180;
            theta = startRadian:pi/100:endRadian;
        end
        function plotEllipse(obj)
            startRadian = obj.angleRange(1) * pi / 180;
            endRadian = obj.angleRange(2) * pi / 180;
            theta = startRadian:pi/100:endRadian;
            X = obj.a * cos(theta);
            Y = obj.b * sin(theta);
            % 旋转坐标
            rotationMatrix = [cosd(obj.rotation), -sind(obj.rotation); sind(obj.rotation), cosd(obj.rotation)];
            xyRotated = [X; Y]' * rotationMatrix;
            % 将旋转后的椭圆平移到指定的位置
            XY(:,1) = xyRotated(:,1) + obj.x;
            XY(:,2) = xyRotated(:,2) + obj.y;
            % 根据 plotType 来绘制椭圆
            if strcmp(obj.plotType, 'plot')
                plot(XY(:,1), XY(:,2), '-', 'Color', obj.lineColor, 'LineWidth', obj.lineWidth);
                hold on; axis equal
            elseif strcmp(obj.plotType, 'fill')
                fill(XY(:,1), XY(:,2), obj.fillColor, 'EdgeColor', obj.lineColor, 'FaceAlpha', obj.alpha, 'LineWidth', obj.lineWidth);
                hold on; axis equal
            else
                error('无效的 plotType 参数!');
            end
        end
    end
end

属性 (properties)

这些属性定义了椭圆的参数和绘图样式。

  • a, b: 椭圆的主轴和次轴的长度。

  • x, y: 椭圆的中心位置。

  • angleRange: 绘制椭圆的角度范围。

  • rotation: 椭圆的旋转角度。

  • lineColor: 椭圆边界的颜色。

  • lineWidth: 椭圆边界的线宽。

  • plotType: 绘图类型,可以是 'plot' 或 'fill'。

  • fillColor: 如果 plotType 是 'fill',则此属性定义填充颜色。

  • alpha: 填充的透明度。

方法 (methods)

这些方法定义了类的功能。

  1. 构造函数 (EllipsePlotter):

    • 当创建这个类的对象时,它会被调用。

    • 它接受一系列的名称-值对参数,允许在创建对象时设置属性。

    • 它目前只计算了一个角度范围,但并没有使用这个范围做任何其他事情。

  2. plotEllipse:

    • 该方法根据对象的属性值绘制一个椭圆。

    • 它首先计算了椭圆上的点的坐标。

    • 然后根据 rotation 属性旋转这些点。

    • 接着将旋转后的点平移到 x 和 y 属性指定的位置。

    • 最后,根据 plotType 属性选择绘制方式:'plot' 会绘制椭圆的轮廓,而 'fill' 会填充椭圆。

这个类可以使用户轻松地创建和定制椭圆的绘图,而不必每次都重复相同的计算和绘图代码。例如,用户可以轻松地更改椭圆的大小、位置、颜色和旋转,并立即看到结果。

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

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

相关文章

Flink(三)【运行时架构】

前言 今天学习 Flink 的一些原理性的东西,比较偏概念,但是十分重要。有人觉得上来框框敲代码才能学到东西,那是狗屁不通的道理(虽然我以前也这么认为)。个人认为,学习 JavaEE那些框架,你上来就敲…

​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】 课本里章节里所有蓝色字体的思维导图

049-第三代软件开发-软件部署脚本(一)

第三代软件开发-软件部署脚本(一) 文章目录 第三代软件开发-软件部署脚本(一)项目介绍软件部署脚本(一)其他方式 关键字: Qt、 Qml、 bash、 shell、 脚本 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object…

探讨m6调控因子与人类癌症之间的因果关系,纯生信也能轻松上5+

今天给同学们分享一篇生信文章“m6A Regulators Is Differently Expressed and Correlated With Immune Response of Esophageal Cancer”,这篇文章发表在Front Cell Dev Biol期刊上,影响因子为5.5。 结果解读: m6A调控因子在基因组中的异常与…

【2023.11.6】OpenAI发布会——近期chatgpt被攻击,不能使用

OpenAI发布会 写在最前面发布会内容GPT-4 Turbo 具有 128K 上下文函数调用更新改进了指令遵循和 JSON 模式可重现的输出和对数概率更新了 GPT-3.5 Turbo 助手 API、检索和代码解释器API 中的新模式GPT-4 Turbo 带视觉DALLE 3文字转语音 (TTS)收听语音样本…

Spark大数据应用实战

系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

【QEMU-tap-windows-Xshell】QEMU 创建 aarch64虚拟机(附有QEMU免费资源)

“从零开始:在Windows上创建aarch64(ARM64)虚拟机” 前言 aarch64(ARM64)架构是一种现代的、基于 ARM 技术的计算架构,具有诸多优点,如低功耗、高性能和广泛应用等。为了在 Windows 平台上体验…

全国5米高程DEM数据及衍生的坡度数据

坡度是地表单元陡缓的程度,通常把坡面的垂直高度和水平距离的比值称为坡度。坡度的表示方法有百分比法、度数法、密位法和分数法四种,其中以百分比法和度数法较为常用。 坡度是地表单元陡缓的程度,通常把坡面的垂直高度和水平距离的比值称为坡…

python 时间加法 输出t分钟后的时间

题目: 现在时间是a点b分,请问t分钟后,是几点几分? 输入: 第一行包含一个整数a 第二行包含一个整数b 第三行包含一个整数t 其中,0≤a≤23,0≤b≤59,0≤t,t分钟后还…

node插件MongoDB(三)—— 库mongoose 的使用

前言 提示:使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档:http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码(连接mongodb 服务)3.…

鸡尾酒学习——原谅(自制)

1、材料:冰块、君度、蓝橙力娇酒、雪碧、橘子。 2、口感:甜味为主带着一丝丝酸味,喝起来比较清爽,没有一丝酒味的小甜酒。(喜欢喝酒的可以多加酒,不喜欢喝酒的可以适量减少酒) 3、视觉效果&…

μC/OS-II---内核:任务调度

目录 内核:调度(oc_core.c文件的函数)OS_TCB(任务控制块)初始化任务控制块列表(ucos_ii.h文件的函数)系统调用,主动让渡CPU发生中断,强制当前任务让渡CPU就绪表(ucos_ii.h文件的函数)设置任务进…

SPASS-描述性分析

将身高移入变量 结果展示: 表中分析变量“身高”的个案数、所有个案中的极大值、极小值、均值、标准差及偏度和峰度

了解web框架

Web框架前戏 Web框架本质 web框架本质上可以看成是一个功能强大的socket服务端,用户的浏览器可以看成是拥有可视化界面的socket客户端。两者通过网络请求实现数据交互,学者们也可以从架构层面上先简单的将Web框架看做是对前端、数据库的全方位整合 纯手撸web框架 …

微信小程序电商审核模版

《电商平台服务协议》与交易规则 下载链接 电商平台对入驻经营者的审核要求或规范文件 下载链接 电商平台对用户交易纠纷处理的机制或方案 下载链接 打包下载:https://download.csdn.net/download/nicepainkiller/88519604https://download.csdn.net/download/nicep…

SAP-PP-报错:工作中心 7333_JQ 工厂 7331 对任务清单类型 N 不存在

创建工艺路线时报错:工作中心 7333_JQ 工厂 7331 对任务清单类型 N 不存在, 这是因为在创建工作中心时未维护控制键值导致的

Leetcode—102.二叉树的层序遍历【中等】

2023每日刷题(二十四) Leetcode—102.二叉树的层序遍历 C语言BFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Return an array of arr…

16.字符连接

#include<stdio.h> #include <cstring> int main(){char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);strcat(s1,s2) ;printf("连接两个字符为&#xff1a;%s ",s1); return 0;}

xdcms漏洞合集-漏洞复现

目录 xdcms v3.0.1漏洞 环境搭建 代码审计 目录总览 配置文件总览 登陆处sql注入 漏洞分析 漏洞复现 注册处sql注入漏洞 漏洞分析 漏洞复现 getshell 任意文件删除 xdcms订餐网站管理系统v1.0漏洞 简介 环境搭建 全局变量的覆盖 漏洞分析 漏洞复现 后台任意…

674. 最长连续递增序列 718. 最长重复子数组 1143.最长公共子序列 1035.不相交的线

674. 最长连续递增序列 题目&#xff1a; 给定一个未经排序的整数数组nums&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 dp数组含义&#xff1a; dp[i]&#xff1a;以下标i为结尾的连续递增的子序列长度为dp[i]。 递推公式&#xff1a; 怎么…