1

我不知道如何计算 3D 中两个向量(由 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

标准化向量,然后将它们相加。合成向量平分其他两个。

于 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)

注意粗体字的两行。

第一个问题本质上是一个符号问题。你需要翻译你的向量,所以p2在原点。所以,得到V1V2,你分别减去p2和。您在计算时执行此操作,但您正在计算而不是.p1p3V1V2=p2-p3V2=p3-p2

第二个问题是您的向量Bisector相对于放置在的原点进行平移p2。因此,您需要将其转换回原始坐标系。这只需添加p2到您的Bisector矢量以进行显示即可。这就是现在在最后一行中所做的。

于 2012-12-11T15:20:57.507 回答