x=1,y=1の交点を通り、z軸に平行な直線を三次元表示で描画したい
8 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!