pangyugonggong 发表于 2012-9-12 17:11:07

空间任意两条Line,如何利用Matrix转换使得它们重合????

如题,我现在想把两条空间直线(长度一致,首尾坐标已知)进行空间变换使得两条直线完全重合,我查阅过帮助已经知道应该是通过平移和旋转操作可以完成,平移没什么问题,旋转一直没领悟要领,导致结果总是不对.

            solid.TransformBy(Matrix3d.Displacement(line1.startpoint- line2.startpoint));//其中一个顶点对齐

接下来如何使用
         solid.TransformBy(Matrix3d.Rotation(angle, axis,line1.startpoint))
按上述的顶点进行旋转呢?

我使用了以下办法获取TransformBy前两个参数angle(旋转角度)及vector(旋转轴矢量)
double angle = line1.Delta.GetAngleTo(line2.Delta);
vector axis=line1.Delta-line2.Delta //感觉这种方法有错,但不知道应该怎么做

pangyugonggong 发表于 2012-9-13 08:57:15

自己已解决,是旋转矢量轴定义错误了,正确结果如下:
Plane p = new Plane(info.pipeLine.StartPoint,middlePoint,solidAxis.StartPoint);
vector axis= p.Normal
页: [1]
查看完整版本: 空间任意两条Line,如何利用Matrix转换使得它们重合????