MATLAB Answers

Saito
0

座標上に円を描く

Asked by Saito
on 1 Nov 2019
Latest activity Answered by Saito
on 21 Nov 2019 at 2:23
X軸2点とY軸2点、合計4点を通過する円を座標上に描く(プロットする)のに、最も最適な方法を教えてください。 このような円をZ軸上では水平で、高さの異なるものをひとつのグラフに収めて2Dでも3D でも見れたら良いと思います。

  1 Comment

Yoshio
on 1 Nov 2019
最適な方法とは、どのような規準で考えれられていますか?
プログラムサイズ、スピードやわかりやすさ等あると思いますが。
また
4点を通過する円について、この4点を与えるという条件下で、中心と半径を4点から計算した上で行ういうことで良いでしょうか?
その際、Kazuyaさんの質問にもありますが、4点が厳密に通る必要があるのか、誤差を許容してもよいのかどちらでしょう?

Sign in to comment.

Products

3 Answers

Kazuya
Answer by Kazuya
on 1 Nov 2019
 Accepted Answer

4点を厳密に通るか、なんとなくいい感じに通ればいいのかはわかりませんが、私であればまず円にフィッテイングして、plot3 関数でプロットを描きます。
円の式を求めるなら
が使えるかもしれません。Good luck!

  0 Comments

Sign in to comment.


Answer by Etsuo Maeda on 6 Nov 2019

一般的にMathで解くならこうですかね。
clear; close all;
% set points [x y z]
p1 = [3 2 -1];
p2 = [1 3 -2];
p3 = [3 -1 -4];
p4 = [0 0 -2];
% set symbolic variables
syms x y z a b c r
% set equation for sphere
f = (x-a)^2 + (y-b)^2 + (z-c)^2 == r^2;
f1 = subs(f, [x, y, z], p1);
f2 = subs(f, [x, y, z], p2);
f3 = subs(f, [x, y, z], p3);
f4 = subs(f, [x, y, z], p4);
F = [f1; f2; f3; f4];
% solve equations
assume([a, b, c], 'real')
assume(r, 'positive')
sol = solve(F, [a, b, c, r]);
sol.a
sol.b
sol.c
sol.r
HTH

  0 Comments

Sign in to comment.


Saito
Answer by Saito
on 21 Nov 2019 at 2:23

皆様、
有難うございました。
Yoshioさん、点の上を通過する必要が有ります。Kazuyaさん、Maeda さんのアドバイス、有用です。使わせていただきます。

  0 Comments

Sign in to comment.