高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】about gettransformedcopy90
about gettransformedcopy()
about gettransformedcopy()
gettransformedcopy() may fail because not all entities can be transformed by any matrix. for example by non-uniscale matrix.
who can tell me what is non-uniscale matrix.
if gettransformedcopy() fails, should i transform entities in block by myself, or there is any other way?
for example, a line entity in block, but gettransformedcopy() can't get it.
should i do as follows?
struct point
{
double x;
double y;
};
bool transform(oddbentityptr pent, odgematrix3d mtx)
{
oddblineptr pline = pent;
point tmpstart= {(pline->startpoint()).x, (pline->startpoint()).y};
point tmpend= {(pline->endpoint()).x, (pline->endpoint()).y};
point start = {0, 0};
point end= {0, 0};
start.x = mtx(0,0)*tmpstart.x + mtx(0,1)*tmpstart.y + mtx(0,3);
start.x = mtx(1,0)*tmpstart.x + mtx(1,1)*tmpstart.y + mtx(1,3);
end.x = mtx(0,0)*tmpend.x + mtx(0,1)*tmpend.y + mtx(0,3);
end.x = mtx(0,0)*tmpend.x + mtx(0,1)*tmpend.y + mtx(0,3);
return true;
}
give me a hand will be appreciated.
please give me a hand
non-uniscale is a matrix which has different scales for x/y/z.
oddbline can be transformed by non-uniscale matrix.
but it's non always trivial to transform an entity by "any" matrix. what should be done with 3dsolid for example?
btw, odgepoint3d class has transformby(const odgematrix3d&) method.
you need not perform transformation for point "manually".
sergey slezkin
|