1

3D で 2 つのベクトル (3 点で定義される) の角度の二等分線を計算する方法がわかりません。例:私のポイントは次のとおりです。

P1=[0 0 0];
p2=[26.94,-6.68,42.76];
P3=[7.2804  -11.1231   46.6817];

p2 は角二等分線の始点です。

ここに画像の説明を入力

p1=[0 0 0];
p2=[26.94,-6.68,42.76];
p3=[7.2804  -11.1231   46.6817];


V1=[(p1(1)-p2(1)) (p1(2)-p2(2)) (p1(3)-p2(3))];
V2=[(p2(1)-p3(1)) (p2(2)-p3(2)) (p2(3)-p3(3))];

V1=V1/norm(V1);
V2=V2/norm(V2);

Bisector=V1+V2;
figure
hold on

plot3([p3(3),p2(3)],[p3(2),p2(2)],[p3(1),p2(1)],'Color','r','LineWidth',2)
plot3([p1(3),p2(3)],[p1(2),p2(2)],[p1(1),p2(1)],'Color','r','LineWidth',2)

plot3([p2(3),Bisector(3)],[p2(2),Bisector(2)],[p2(1),Bisector(1)],'Color','y','LineWidth',2)

ここに画像の説明を入力

4

2 に答える 2

8

ベクトルを正規化してから追加します。結果のベクトルは、他の 2 つを二等分します。

于 2012-12-10T18:46:53.533 に答える
1

上記のコードにいくつかのエラーがあります。これで修正されるはずです。

V1=[(p1(1)-p2(1)) (p1(2)-p2(2)) (p1(3)-p2(3))];
V2=[(p3(1)-p2(1)) (p3(2)-p2(2)) (p3(3)-p2(3))];

V1=V1/norm(V1);
V2=V2/norm(V2);

Bisector=V1+V2;
figure
hold on

plot3([p3(3),p2(3)],[p3(2),p2(2)],[p3(1),p2(1)],'Color','r','LineWidth',2)
plot3([p1(3),p2(3)],[p1(2),p2(2)],[p1(1),p2(1)],'Color','r','LineWidth',2)

plot3([p2(3),Bisector(3)+p2(3)],[p2(2),Bisector(2)+p2(2)],[p2(1),Bisector(1)+p2(1)],'Color','y','LineWidth',2)

太字の 2 行に注意してください。

最初の問題は本質的に符号の問題です。p2原点にあるようにベクトルを変換する必要があります。したがって、取得するにはV1、およびからそれぞれV2,減算します。計算するときにこれを行いますが、計算ではなく計算しています。p2p1p3V1V2=p2-p3V2=p3-p2

2 番目の問題は、ベクトルBisectorが に配置された原点に対して相対的に変換されることp2です。したがって、元の座標系に戻す必要があります。これは、表示目的でベクターに追加p2するだけで実行できます。Bisectorこれが最後の行で行われていることです。

于 2012-12-11T15:20:57.507 に答える