查看单个帖子
旧 2009-05-04, 06:09 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】controlling the tessellation of arcs and circles

controlling the tessellation of arcs and circles
controlling the tessellation of arcs and circles
the only way i have found to control the number of triangles that are produced from filled arc and circle boundaries (for example, wide polylines with arc segments) is with the following method:
odgspaperlayouthelperptr:nsize( )
i pass in very large sizes in order to get more accurate paper space geometry. the problem is that too many triangles are produced in odgigeometrysimplifier::shellproc which slows down the rendering process.
is there any way to decrease the number of triangles that are produced by shellproc?
i have looked into the deviation members but they never seem to be set to anything meaningful.
to do vectorization i have derived my own classes from odgsbasevectorizeview, odgsbasevectorizedevice, and odgigeometrysimplifier.
thanks for any help on this.
chad

the number of triangles depends on odgigeometrysimplifier's deviation. odgigeometrysimplifier gets deviation this way:
quote:
double odgigeometrysimplifier::deviation(const odgideviationtype type, const odgepoint3d& point) const
{
if(m_pdeviation)
{
return m_pdeviation->deviation(type, point);
}
return m_deviations[type];
}
void odgigeometrysimplifier::setdeviation(const odgedoublearray& deviations)
{
m_deviations = deviations;
m_pdeviation = 0;
}
void odgigeometrysimplifier::setdeviation(const odgideviation* pdeviation)
{
m_pdeviation = pdeviation;
}
you should set deviation to your odgigeometrysimplifier instance before the rendering (see, e.g. odgsopenglvectorizeview::beginviewvectorization() - gsopenglvectorizer.cpp)
sincerely yours,
george udov
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)