明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1354|回复: 1

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

[复制链接]
发表于 2012-9-12 17:11:07 | 显示全部楼层 |阅读模式
如题,我现在想把两条空间直线(长度一致,首尾坐标已知)进行空间变换使得两条直线完全重合,我查阅过帮助已经知道应该是通过平移和旋转操作可以完成,平移没什么问题,旋转一直没领悟要领,导致结果总是不对.

            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 //感觉这种方法有错,但不知道应该怎么做
 楼主| 发表于 2012-9-13 08:57:15 | 显示全部楼层
自己已解决,是旋转矢量轴定义错误了,正确结果如下:
Plane p = new Plane(info.pipeLine.StartPoint,middlePoint,solidAxis.StartPoint);
vector axis= p.Normal
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:26 , Processed in 0.147893 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表