声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1475|回复: 7

[综合讨论] 共享2个绘制立方体的程序

[复制链接]
发表于 2009-6-13 22:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
第一个用边线连接每个顶点,其中输入变量seite为正方体边长
  1. function [W_eins]=wuerfel(seite)
  2. punkte=dec2bin(0:7);
  3. for z_idx=1:8, for s_idx = 1:3
  4. endpunkte(z_idx,s_idx) = str2double(punkte(z_idx,s_idx));
  5. end; end
  6. path = [1 3 4 2 1 5 6 2 4 8 6 5 7 8 4 3 7];
  7. W=[endpunkte(path,1) endpunkte(path,2) endpunkte(path,3)];
  8. W = W / 3; W_eins = W * seite;
  9. plot3(W_eins(:,1),W_eins(:,2),W_eins(:,3));
复制代码

第二个为点阵正方体,每条边上点的数目可以通过变量j来确定,变量seite为正方体边长
  1. function [W]=wpunkte(seite,j)
  2. t = 1:j^3;
  3. k = 0; % Anfangwerte des 3. Spatltes vom Matrix w
  4. l = 0; % Anfangwerte des 2. Spatltes vom Matrix w
  5. m = 0; % Anfangwerte des 1. Spatltes vom Matrix w
  6. %% Wuerfel werden aufgebaut, der alle j^3 Punkte hat.
  7. % 3. Spalte
  8. for i = t, w(i,3)=k; k=k+1;
  9.    if k > j-, k = 0; end
  10. end
  11. % 2. Spalte
  12. for i = t
  13.    w(i,2)=l;
  14.    if w(i,3) == j-1, l=l+1; end
  15.    if l > j-1, l = 0; end
  16. end
  17. % 1. Spalte
  18. for i = t-j
  19.    n = i + j; w(n,1) = m;
  20.    if n < j^3
  21.       if w(n,2)==j-1 && w(n+1,2)==0, m = m + 1; end
  22.    end
  23.    if m > j-1, m = 0;end
  24. end
  25. %% (j-2)^3 Innenpunkte werden gesucht
  26. % Die Innenpunkte werden als [0 0 0] gezeichnet.
  27. % Die Innenpunkte werden ab 2. Zeile der Matrix gesucht
  28. for i = 1 : j^3
  29.    if w(i,1) ~= 0 && w(i,1) ~= j-1, if w(i,2) ~= 0 && w(i,2) ~= j-1, if w(i,3) ~= 0 && w(i,3) ~= j-1
  30.       w(i,1:3) = 0;
  31.    end; end; end
  32. end
  33. a=[];

  34. for s = 2 : j^3
  35.    if w(s,1:3)==0, a = [a s]; end
  36. end
  37. %% (j-2)^3 Innenpunkte werden geloescht
  38. w(a,:)=[];
  39. %% Wuerfel werden mit gewunschte Seitelaenge aufgebaut
  40. W_tmp = w / (j-1); W = W_tmp * seite;
  41. plot3(W(:,1),W(:,2),W(:,3),'.');
复制代码
这2个程序都是自己写的,有不妥当的地方请各位不要见笑,并多提宝贵意见

[ 本帖最后由 ChaChing 于 2009-6-14 12:35 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2009-6-13 23:08 | 显示全部楼层

回复 楼主 cheno9468 的帖子

好的很呢!!

第一个画图程序中的W=W / 3;都为大写吧……

[ 本帖最后由 ChaChing 于 2009-6-14 10:43 编辑 ]
发表于 2009-6-14 00:13 | 显示全部楼层
程序跑过吗? 请LS确定程序无误!
 楼主| 发表于 2009-6-14 00:21 | 显示全部楼层
发表于 2009-6-14 10:10 | 显示全部楼层
clc
clear
subplot(121)
wuerfel(2)
subplot(122)
wpunkte(2,4)
%%%%%%%%%%%
注:1.wuerfel中输入参数为正方形边长,但从画出的图中正方形边长看出,二者不符;
2.wpunkte仅以点画图,看着不舒服,可以考虑边缘用线连接;
3.这两个程序画的正方形以原点为起点,可以考虑更一般的情况,可以把它放在空间中任意位置。
untitled.jpg

评分

1

查看全部评分

 楼主| 发表于 2009-6-14 18:14 | 显示全部楼层

回复 5楼 friendchj 的帖子

1. wuerfel中W=W/3那行代码是多余.就是它造成了这个问题
2. wpunkte的目的就要以点做图,如果以边线作图的话会造成一些点的重复,比如在第一个程序里面,矩阵W的大小17*3,其实就只有8个顶点,有些点重复了,这也是捆饶我的问题,一直没有好的解决办法
3. 把正方体放在原点就是为了以后能把它放在空间任一位置而考虑的,其实只要把正方体平移就可以了
发表于 2009-6-14 19:00 | 显示全部楼层
我试着编写了一个,即把正方体由每个线段拼接起来。

  1. clc
  2. clear
  3. a=2;
  4. b=4;
  5. x1=[0 a a 0];
  6. y1=[0 0 a a];
  7. z1=[0 0 0 0];
  8. z2=[a a a a];
  9. subplot(121)
  10. hold on
  11. plot3([x1,x1(1)],[y1,y1(1)],[z1,z1(1)])
  12. plot3([x1,x1(1)],[y1,y1(1)],[z2,z2(1)])
  13. for i=1:length(x1)
  14. plot3([x1(i),x1(i)],[y1(i),y1(i)],[z1(i),z2(i)])
  15. end
  16. view(30,30)
  17. axis equal
  18. hold off
  19. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  20. x2=[0:a/(b-1):a,a*ones(1,b-2),a:a/(1-b):0,zeros(1,b-2)];
  21. zh=a:a/(1-b):0;
  22. y2=[zeros(1,b-1),0:a/(b-1):a,a*ones(1,b-2),zh(1:3)];
  23. zz1=zeros(1,length(x2));
  24. zz2=a*ones(1,length(x2));
  25. subplot(122)
  26. hold on
  27. plot3(x2,y2,zz1,'.')
  28. plot3(x2,y2,zz2,'.')
  29. plot3([x2,x2(1)],[y2,y2(1)],[zz1,zz1(1)],'r')
  30. plot3([x2,x2(1)],[y2,y2(1)],[zz2,zz2(1)],'r')
  31. zh=0:a/(b-1):a;
  32. ind=[1 4 7 10];
  33. for i=1:4
  34.     plot3([x2(ind(i)),x2(ind(i))],[y2(ind(i)),y2(ind(i))],[zh(1),zh(4)],'r')
  35.     plot3([x2(ind(i)),x2(ind(i))],[y2(ind(i)),y2(ind(i))],zh(2:3),'.')
  36. end
  37. view(30,30)
  38. axis equal
  39. hold off
复制代码
untitled.jpg

评分

1

查看全部评分

发表于 2009-6-14 19:58 | 显示全部楼层
好奇, 这用在什样的问题?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 02:54 , Processed in 0.068823 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表