matlab立方体投影,那些投影到三维的高维立方体,后来都怎么样了?(浅度好文)...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
function hypercube( N, a, b, c)
%N为立方体维数,N不小于3
% a为投影方式,b为是否画面,c为是否旋转
%取值 1 点投影 画平面 旋转
%取值 0 平行投影 不画平面 不旋转
%-----------------------------------------------
a=logical(a);
b=logical(b);
c=logical(c);
B=orth(rand(N,N));%每一列是N维正交规范基,共N个
%B=eye(N);%也可以使用单位矩阵
P=zeros(N,2^N);%2^N个N维顶点,每一列用于储存一点的坐标
for j=1:2^N
%第j列,对应j-1的二进制数
for i=1:N
P(i,j)=bitget(j-1,i);%每一列储存不同的二进制数(0-1组合)
end
end
RMP=RM(P);%可达矩阵,true表示距离为1
P=B*P;%每一列为一点的坐标
CT=mean(P,2);%中心点坐标,列向量
P=P-CT*ones(1,2^N);%平移,中心与原点重合
%-------------------------------------------------
if c %有运动
de=2;%旋转角度
C=eye(N);%过渡矩阵C
C1=[cosd(de),sind(de); -sind(de),cosd(de)];%旋转矩阵
C([N-1,N],[N-1,N])=C1;
K=1000;
else %没有运动
K=1;
end
for k=1:K
if a %点投影
PTY=P;%储存投影后坐标
for j=1:2^N
PTY(:,j)=2*PTY(:,j)./(2-PTY(N,j));
end
PXYZ=PTY(1:3,:);
else %平行投影
PXYZ=P(1:3,:);
end
plot3(PXYZ(1,:),PXYZ(2,:),PXYZ(3,:),'r*');
axis([-1.5,1.5,-1.5,1.5,-1.5,1.5]);
hold on
if b %选四点,根据距离画平面
for i4=4:2^N
for i3=3:i4-1
for i2=2:i3-1
for i1=1:i2-1
M4=RMP([i1,i2,i3,i4],[i1,i2,i3,i4]);%4点的可达矩阵
if all(sum(M4)==3)
mysurf(PXYZ(:,[i1,i2,i3,i4]));
end
end
end
end
end
else %选两点,根据距离画线
for i=1:2^N
for j=1:i-1
if RMP(i,j)
plot3( PXYZ(1,[i,j]), PXYZ(2,[i,j]), PXYZ(3,[i,j]),'b-');
end
end
end
end
title([num2str(N),'维立方体']);
xlabel('X轴');
ylabel('Y轴');
zlabel('Z轴');
grid on
hold off
pause(0.01);
if c
P=C*P;%坐标旋转变换
end
end
end
function RMA= RM(A)
%构造n*n可达矩阵
%每一列为点的坐标
n=size(A,2);%点数
RMA=zeros(n,n);
for i=2:n
for j=1:i-1
RMA(i,j)=sum(abs(A(:,i)-A(:,j)));
end
end
RMA=RMA+RMA';
RMA=RMA<1.1;
end
function output = mysurf( A )
%输入四个点画平面
%A是3*4矩阵,三行分别代表X Y Z ,每一列为一点坐标
A=A';
X=[A([1,2],1),A([3,4],1)];
Y=[A([1,2],2),A([3,4],2)];
Z=[A([1,2],3),A([3,4],3)];
output=surf(X,Y,Z);
alpha(0.25);%不透明度
colormap([0,0,1]);%蓝色
end
matlab立方体投影,那些投影到三维的高维立方体,后来都怎么样了?(浅度好文)...相关推荐
- matlab为什么要升维数,基于MATLAB和升维投影法的手写字符识别输入系统
256 现代交际·2019年6期 作者简介:王思达,长春师范大学学生,研究方向:计算机科学与技术:刘勇,长春师范大学学生,研究方向:计算机科学与技术:袁汇灵, 长春师范大学学生,研究方向:计算机科学与 ...
- 【光学】基于matlab模拟光栅条纹投影生成
1 内容介绍 基于matlab模拟光栅条纹投影生成 2 部分代码 function varargout = Main(varargin) % MAIN MATLAB code for Main.fig ...
- 基于matlab的手写输入板,基于MATLAB和升维投影法的手写字符识别输入系统
王思达 刘勇 袁汇灵 摘要:互动式电子白板最早由加拿大SMART Technologies Inc在1331年发明.其最早的用途是会议与培训,并在随后进军到了教育领域.在国内,随着教育正逐渐向数字化. ...
- python使用matplotlib可视化3D线框图、线框图可以将数据投影到指定的三维表面上,并输出可视化程度较高的三维效果图
python使用matplotlib可视化3D线框图.线框图可以将数据投影到指定的三维表面上,并输出可视化程度较高的三维效果图 目录
- 基于数字光栅投影的结构光三维测量技术
概述 欢迎访问 持续更新:https://cgabc.xyz/posts/fb344124/ 本文是在读了论文<基于数字光栅投影的结构光三维测量技术与系统研究>[1]之后做的学习总结,方便 ...
- 【光学】基于matlab GUI光栅条纹投影生成【含Matlab源码 2118期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI光栅条纹投影生成[含Matlab源码 2118期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...
- 基于数字光栅投影的结构光三维测量技术与系统研究
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文末福利:按描述操作,可获取原书籍电子版. [摘要] 相位测量轮廓术是目前使用最为广泛的一种结构光三维 ...
- N圆最密堆积、最小外接正方形的matlab求解(二维、三维等圆Packing 问题)
圆形最密堆积.最小外接正方形的matlab求解(二维.三维等圆Packing 问题) 0 前言 1 N个圆的最小外接正方形求解 2 N个球的最小外接立方体求解 惯例声明:本人没有相关的工程应用经验,只 ...
- css左侧投影_css3投影讲解、投影
迷茫了好一段时间,今天开始整理一下自己,同时也整理下新的知识. CSS3: 从头开始做起:现在在页面中用到最多的是图片/容器投影,文字投影: 接下来就总结一个投影问题: box-shadow:阴影类型 ...
最新文章
- linux svn客户端的使用
- OKR能够为企业带来什么价值?如何正确制定OKR?
- 武汉首座无人驾驶电动汽车充电站投入使用
- 经典的”服务器最多65536个连接”误解
- BZOJ 2788[Poi2012]Festival
- 项目实战-linux下安装activeMQ
- stl文件 python_STL文件,一种前处理网格划分技术??
- Linux的awk命令使用心得
- Django内置的用户认证
- 【编译原理笔记08】语法制导翻译:语法制导定义,SSD的求值顺序,S属性定义与L属性定义
- 2. 详解 QEMU 架构
- NodeJS - 第一个应用程序Hello World
- 常见的五个编译时异常和常见的五个运行时异常
- 分布式存储系统——《Neo4j》
- arcmap 报错 add field failed
- 开源 LighterWebGameEngine框架.外带用框架制作的 网游五彩连珠.
- 从零开始构建PHP版mud游戏(二)
- 【王老师说运维】:高级运维开发工程师在线评测
- 互联网女皇解读2018大势:新技术、云服务和数据隐私【附294页中文版PPT】
- 调研技巧(上):以『时间旅行调试』为例