培训类网站建设,yanderedev wordpress,安徽省建设工程信息网宣城市公开招标信息,什么是o2o电商模式几何算法——4.曲面求交的交线#xff08;intersection curve#xff09;的表达与参数化、微分性质1 关于曲面求交的交线表达2 交线的微分性质3 交线的参数化4 修正弦长参数化的微分性质1 关于曲面求交的交线表达
两个曲面求交#xff0c;比较经典的方法是用跟踪法#xf…
几何算法——4.曲面求交的交线intersection curve的表达与参数化、微分性质1 关于曲面求交的交线表达2 交线的微分性质3 交线的参数化4 修正弦长参数化的微分性质1 关于曲面求交的交线表达
两个曲面求交比较经典的方法是用跟踪法具体算法此步就不再详述跟踪法得到的是若干个交点信息的列表下文称“交点表”。
在交点表中的每一个交点都会保存有【交点坐标point在曲面s1的uv参数、曲面s2的uv参数还可以附加其他信息譬如是否是奇异点等】
这样若干个这样的交点也可以用来插值成nurbs曲线作为交线的简化形式。但是我们为了保证交线的精确性创建了交线这种曲线作为一种基本的类型。
求交结果的记录
struct IntPoint
{Point3d position; // positionUVParam uvParam0; // surface0 parameterUVParam uvParam1; // surface1 parameterdouble param; // curve parameter
}std::vectorIntPoint intPointsChart;由于交线表达的复杂性存在很多特殊的地方譬如说奇异点等所以交线的定义或复杂一些包含更多的信息
struct IntCurve
{// the surfaces informationstd::shared_ptrSurface m_surface0;std::shared_ptrSurface m_surface1;intPointsChart intPtsChart;//Terminator start;//Terminator end;bool isParametried;
};2 交线的微分性质
既然将交线作为一种基本曲线那么肯定就需要计算交线的一些基本的微分性质等。
在使用跟踪法计算交线的的时候会利用两个曲面的法相计算交线的切向利用两个曲面的偏u、偏v计算交线的曲率等。具体的计算方法甚至于两个曲面相切的情况微分性质的计算方法可以参考叶修梓的论文1^11 注1^11Differential geometry of intersection curves of two surfaces. 当然也有很多其他论文可以参考但是我遇到过有的论文有推导的公式有笔误叶修梓这篇文章我仔细推导过没有问题。
3 交线的参数化
上一篇ppt中讲的是微分计算但是这个计算是利用第二基本形式计算推导的可以理解为弧长参数化计算的
而在实际交线计算中有需要反求参数等这种操作如果用弧长参数化参数节点值计算、反求参数等会特别麻烦需要大量计算会影响效率
因此比较方便快捷的方法是积累弦长参数化的方法简单来说就是利用交点表中的点当作折线段来计算参数区间类似polyline但是用积累弦长参数化存在的问题是在交点处不连续而曲线实际是连续的
因此采用修正弦长参数化方法在交点处根据前后弦的方向转交计算一个缩放因子保证连续性
注曲面第一第二基本形式、弦长参数化、修正弦长参数化方法可参考the nurbs book和施法中的计算机辅助几何设计。
4 修正弦长参数化的微分性质
在说修正弦长参数化的微分性质前先说一下弦长参数化的微分性质 从弦长参数化到弧长参数化差的就是一个从弦长参数化到弧长参数化的曲率因子在弧长参数化的微分上乘上一个弦长到弧长参数化的曲率因子就行
从修正弦长参数化到弦长参数化差的就是一个转角处的修正因子也是乘上一个修正因子就行
如果用弧长参数化的方法不好的地方在于计算交点处节点值慢节点值要用高斯积分计算弧长
还有一种参数化方法就是弦法平面与线求交的交点一一对应反求参数会快很多但是这个地方存在一个问题就是反求参数计算方便了但是反求参数计算的不是垂足点这样算是一种参数化