高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】odgsview worldtodevicematrix90
odgsview:: worldtodevicematrix()
odgsview:: worldtodevicematrix()
hello again,
i磎 trying to add an oddbline entity to the database in your odamdiapp application.
i'm using the following code into onlbuttonup method in order to obtain wcs coordinates from device coordinates that onlbuttonup uses.
the problem i got is that after the call to transformby() ptaux.z is equal to 1 and the application crashes when it try to redraw:
odgsview* pview = getactiveview();
odgematrix3d mattransform;
mattransform=pview->worldtodevicematrix();
mattransform.invert();
odgepoint3d ptaux;
ptaux.x = m_startpoint.x;
ptaux.y = m_startpoint.y;
ptaux.transformby(mattransform);
pline->setstartpoint(ptaux);
ptaux.x = m_endpoint.x;
ptaux.y = m_endpoint.y;
ptaux.transformby(mattransform);
pline->setendpoint(ptaux);
thanks, best regards to all the team.
i cannot reproduce any crashes on version 1.07. next version of dwgdirect will contain an example of adding oddbline (retrieving coordinates from mouse clicks).
btw, correct way to get wcs coordinates of point is using ucs:
ptwcs = ptdevice * ([ucs->wcs]*[wcs->dev])^(-1) * [ucs->wcs]
where
[ucs->wcs] is matrix transforming 2d ucs coords to 3d wcs,
[wcs->dev] is matrix transforming 3d wcs coords to 2d device.
matrix multiplications' order here like in mathematics (not like in dwgdirect), expression in brackets is inverted as 2d matrix.
sincerely yours,
george udov
|