You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用patch()高效绘制y轴分色的立方体?

简洁实现单次patch调用绘制分色立方体

优化后的代码实现

% 定义立方体参数:中心在原点,边长为2(坐标范围-1到1)
min_c = -1;
max_c = 1;

% 生成y>0区域的5个面顶点(顶面+四个侧面上半部分)
top_faces = [
    % 顶面 (y=max_c)
    max_c max_c max_c; max_c max_c min_c; min_c max_c min_c; min_c max_c max_c;
    % 前侧面上半 (z=max_c, y从0到max_c)
    max_c max_c max_c; max_c min_c max_c; min_c min_c max_c; min_c max_c max_c;
    % 右侧面上半 (x=max_c, y从0到max_c)
    max_c max_c max_c; max_c max_c min_c; max_c min_c min_c; max_c min_c max_c;
    % 后侧面上半 (z=min_c, y从0到max_c)
    max_c max_c min_c; max_c min_c min_c; min_c min_c min_c; min_c max_c min_c;
    % 左侧面上半 (x=min_c, y从0到max_c)
    min_c max_c max_c; min_c max_c min_c; min_c min_c min_c; min_c min_c max_c;
];

% 生成y<0区域的5个面顶点:直接翻转y坐标
bottom_faces = top_faces;
bottom_faces(:,2) = -bottom_faces(:,2);

% 按面拼接顶点矩阵(每4列对应一个面)
x = [top_faces(:,1)' bottom_faces(:,1)'];
y = [top_faces(:,2)' bottom_faces(:,2)'];
z = [top_faces(:,3)' bottom_faces(:,3)'];

% 定义颜色:前5个面红色,后5个面蓝色,用repmat简化赋值
color_mat = repmat([1 0 0; 0 0 1], 5, 1);

figure;
patch(x, y, z, color_mat);
view(3);
axis equal; % 保持坐标轴比例,避免立方体变形

优化说明

  1. 顶点生成简化:
    不再逐个定义每个面的x/y/z分量,而是用一个矩阵统一描述y>0区域的所有面顶点,通过翻转y坐标快速得到y<0区域的顶点,大幅减少代码行数。
  2. 颜色矩阵高效构建:
    用repmat函数直接重复颜色向量,替代原代码中逐通道赋值的冗余操作,一行完成10个面的颜色定义。
  3. 可读性与扩展性提升:
    立方体的边长仅需修改min_c和max_c即可调整,颜色修改只需替换repmat中的颜色向量,逻辑清晰易维护。

内容的提问来源于stack exchange,提问作者teeeeee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:40