
x=1,y=1の交点を通り、z軸に平行な直線を三次元表示で描画したい
    6 views (last 30 days)
  
       Show older comments
    
初めまして、基礎的な質問で申し訳ありません、
質問通りですが、x=1,y=1を通るかつ、z軸に平行な直線を三次元の点群表示で描画したいと考えています。
自分ができる範囲でプログラムを構築した現在のコードと結果を示します。
下の図の結果で言うと、一番奥のベクトルが表示したいものです。
実行不可の部分での改善手法やアドバイスを頂けると幸いです。
宜しくお願い致します。
p0 = [0,0,0; 1,0,0; 0,1,0; 1,1,0]; % 始点の座標
p1 = [0,0,1; 1,0,1; 0,1,1; 1,1,1]; % 終点の座標
v = p1 - p0;                       % ベクトル
figure;
quiver3(p0(:,1),p0(:,2),p0(:,3),v(:,1),v(:,2),v(:,3),0)
figure; %%以下3行実行不可
pcshow(pointCloud((v(:,3)))) %三次元表示
ptCloud = pointCloud(v(:,3),0);

0 Comments
Accepted Answer
  Yoshio
    
 on 23 Aug 2019
        点群で表示するために、一様乱数を使ってデータを作成してみました。このような感じでしょうか?
なお、z軸方向の値の大きさで色づけされていますが、これがご希望ではないなら、ヘルプデキュメンでpcshowを見て、適宜ご変更ください。
n = 300;
V = [ones(n,2) rand(n,1)];
pcshow(pointCloud(V))

2 Comments
  Yoshio
    
 on 26 Aug 2019
				「三次元の点群表示で」の意味ですが、単に直線上に並んだ点を結ぶということでしたら、pointCloudを使わずに、plot3を使って以下のようにできます。
x = ones(10,1);
y = x;
z = linspace(0,1,10);
plot3(x,y,z)
grid on

または、lineを使っても同様にできます。
figure
line(x,y,z)
view(3)
grid on
  Yoshio
    
 on 7 Sep 2019
				最初の解答例ですが、点群を乱数にする必要がなければ、
n = 300;
V = [ones(n,2) linspace(0,1,n)'];
pcshow(pointCloud(V))
でもよいですね。
More Answers (1)
See Also
Categories
				Find more on LIDAR および点群の処理 in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
