MATLAB Answers

x=1,y=1の交点​を通り、z軸に平行な​直線を三次元表示で描​画したい

4 views (last 30 days)
virgo kk
virgo kk on 23 Aug 2019
Commented: Yoshio on 7 Sep 2019
初めまして、基礎的な質問で申し訳ありません、
質問通りですが、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);

Accepted Answer

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

Sign in to comment.

More Answers (1)

virgo kk
virgo kk on 27 Aug 2019
お答え頂いて有難うございます。参考にさせていただきます。
一つ質問なのですが、pointCloudクラスにおいて、指定した各値Colorなどの値を入力したものを
二つ以上pcshowで表示することは可能でしょうか?
具体的にコードを下に示します。
V1=pointCloud([1 1 0],'Color',[0 0 255],'Normal',[1 1 0],'Intensity',[0.5]);
>> V2=pointCloud([2 2 0],'Color',[0 0 255],'Normal',[1 1 0],'Intensity',[0.5]);
>> pcshow(V1,V2)
% エラー: pcshow
パラメーター名には string スカラーまたは文字ベクトルが必要です。
エラー: pcshow>validateAndParseInputs (line 160)
parser.parse(pvpairs{:});
エラー: pcshow (line 99)
validateAndParseInputs(varargin{:});
これを入力しても、上のようなエラー文が出てしまいます。点が一点の場合は正しく表示されます。
簡単な解決法としては、hold on;を使うことなのですが、ここでは使わずに表示できるかをお答え頂きたいです。
宜しくお願い致します。
  2 Comments
virgo kk
virgo kk on 27 Aug 2019
わかりました。
今回はお答え頂いて有難うございました。

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!