这更像是一个数学难题,而不是具体的编码,但我相信我也需要帮助。
我正在编写一些代码,将MicroStation单元格放置在选定的比例上,然后使用MicroStation命令将部分单元格拉伸到另一个位置。代码已经完成了,我想,因为它在我的测试环境中工作,但是在与一些用户的测试中,它立即崩溃了。这需要一些时间来确定原因,这是由屏幕上的视图有旋转应用造成的。
我的代码依赖于捕获使用point3d检索的单元格位置开始时的用户放置位置,然后我需要从最后一点沿XY在一个设定的距离上选择另一个点,这是通过考虑所选的比例"CellScale作为整数“来调整的,因此我的第二个位置被定义为:
PosFlood.X=Pos1.X + (0.35 * CellScale)
PosFlood.Y=Pos1.Y + (0.007 * CellScale)但是当视图旋转时,这种计算是错误的。我已经能够恢复旋转角度,并将其设置为"ViewAngle as Double“,但我不知道用什么公式来计算我的第二个位置,我相信我需要使用sin和cos,但是所有搜索都使我感到不足。
希望网络空间里有一个数学巫师,谁能让我走上正确的道路?
谢谢-马克
发布于 2016-02-26 15:56:23
MicroStation是三维的,使用角度不是处理旋转的好方法。3D数学中的一种常见方法是使用旋转矩阵,这是由MicroStation VBA和Matrix3D类完全支持的。
您可以使用MicroStation获得View.Rotation视图的旋转矩阵。您将在Matrix3D VBA帮助中找到许多在MicroStation上操作的方法。这些方法包括计算缩放矩阵和乘矩阵(例如scaling matrix . rotation matrix)以获得单元的旋转。
https://stackoverflow.com/questions/31703167
复制相似问题