[求助]关于坐标转换的问题
<p>发现越学问题越多了!!!又碰到个坐标转换的问题</p><p>我有一个用户坐标系,原点Pt1,x轴向量Vect1,y轴向量Vect2</p>
<p>那么我定义了一个坐标系</p>
<p>Dim UCS as new CoordinateSystem3d (pt1,Vect1,Vect2)</p>
<p>然后我又认为世界坐标的原点就是New Point3d(0,0,0), x轴是New Vector3d(1,0,0) y轴是New Vector3d(0,1,0)</p>
<p>所以我定义了 Dim WCS as new CoordinateSystem3d (New Point3d(0,0,0), New Vector3d(1,0,0),New Vector3d(0,1,0))</p>
<p>然后我定义了一个矩阵 </p>
<p>Dim UCS2WCS as new matrix3d=Matrix3d.AlignCoordinateSystem (Ucs.orign,Ucs.xaxis,Ucs.yaxis,Ucs.zaxis,Wcs.orign,Wcs.xaxis,Wcs.yaxis,Wcs.zaxis)</p>
<p>从参数取名意思上看,通过这个矩阵,就能把点从UCS坐标转到WCS。</p>
<p>也就是wcsPt=ucsPt.TransformBy(UCS2WCS)</p>
<p> </p>
<p>但是实际的操作中,我发现我给定的UCS坐标转过来的WCS坐标并不正确。</p> <p>倒置一下?</p> <p>呵呵,这里就版主能回答问题!!</p>
<p> </p>
<p>我也试过倒置用wcsPt=ucsPt.TransformBy(UCS2WCS.inverse) ,结果更要命!!</p>
<p> </p>
<p>你帮忙看看上面,我的思路正确吗? </p> <p>嗯,你的代码似乎感觉没什么问题?</p>
<p>调用的问题?</p> <p>会不会是Dim UCS as new CoordinateSystem3d (pt1,Vect1,Vect2)这一句有问题</p>
<p>pt1是世界坐标系的值还是用户坐标系的值,跟这个是否有关?</p> <p>谢谢楼上,</p>
<p>不过我觉得关系不大!因为是建立一个坐标系统嘛,如果都以自身为参照,那么所有的坐标系统都相同了!</p>
<p>UCS这个系统,我觉得,它需要携带的就是相对于WCS下的原点、轴向的信息。不然,它的建立跟WCS的建立就没区别了!</p> <p>问题还没有解决啊!!!</p> "Dim UCS2WCS as new matrix3d=Matrix3d.AlignCoordinateSystem (Ucs.orign,Ucs.xaxis,Ucs.yaxis,Ucs.zaxis,Wcs.orign,Wcs.xaxis,Wcs.yaxis,Wcs.zaxis)"这一句语法好像有点问题,应该没有NEW关键字吧? <p><font face="Verdana"> <CommandMethod("test")> _<br/> Public Sub test()<br/> Dim UCS As New CoordinateSystem3d(New Point3d(20, 10, 0), New Vector3d(1, 0, 0), New Vector3d(0, 1, 0))<br/> Dim WCS As New CoordinateSystem3d(Point3d.Origin, Vector3d.XAxis, Vector3d.YAxis)<br/> Dim UCSPoint As New Point3d(-10, -310, 0)<br/> Dim UCS2WCS As Matrix3d = Matrix3d.AlignCoordinateSystem(WCS.Origin, WCS.Xaxis, WCS.Yaxis, WCS.Zaxis, UCS.Origin, UCS.Xaxis, UCS.Yaxis, UCS.Zaxis)<br/> Dim WCSPoint As Point3d = UCSPoint.TransformBy(UCS2WCS)</font></p>
<p><font face="Verdana"> End Sub</font></p>
<p>这个好像能满足你的意思</p> <p>额~~,from和to对调了一下就OK了? 我要回去实验一下!</p>
页:
[1]
2