发明名称 基于二维手绘线画图的三维对称自由形体生成方法
摘要 基于二维手绘线画图的三维对称自由形体生成方法,包括以下三个步骤:1)将二维手绘平面取为XOY坐标平面,为目标自由形体的每个子部分绘制4条二维构造曲线,利用构造曲线重建物体的每一部分;2)根据用户的绘制顺序确定自由形体每个子部分的构造曲线,并以曲线对形式进行三维坐标计算;3)根据生成的物体每一子部分的三维构造曲线对,可以利用混合方法生成表示自由形体每一子部分的曲面,物体各个子部分可以由一系列环形曲线混合生成相应曲面表示,最终由各个子部分共同组成三维对称自由形体。本发明提供了一种操作简单、方便快捷、造型丰富的三维对称自由形体的生成方法。
申请公布号 CN103985152B 申请公布日期 2017.01.25
申请号 CN201410017204.6 申请日期 2014.01.15
申请人 浙江工业大学 发明人 缪永伟;胡非夏;张旭东
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;黄美娟
主权项 基于二维手绘线画图的三维对称自由形体生成方法,包括以下步骤:步骤1)将二维手绘平面取为XOY坐标平面,为目标自由形体的每个子部分绘制4条二维构造曲线,利用构造曲线重建物体的每一部分;其中关于对称面自身对称的物体子部分,首先绘制两条对称曲线,然后绘制两条非对称一般曲线,从而可以得到4条构造曲线;对于物体中一个子部分与另一子部分关于对称面相互对称的情况,首先绘制分属两个子部分的两对对称曲线,再根据每个子部分中的对称曲线分别绘制出一对非对称一般曲线;步骤2)根据绘制顺序确定自由形体每个子部分的构造曲线,并以曲线对形式进行三维坐标计算;每个子部分中的构造曲线都进行滤波去噪并利用二次B‑样条曲线进行插值,从4条构造曲线中分别采样相同数目的采样点,利用指定的对称面,由深度z坐标计算方法计算出构造曲线上采样点的三维坐标;将二维手绘平面中手绘线画图上的顶点x坐标和y坐标实际对应于三维物体上顶点的x坐标和y坐标,需要恢复的仅仅是每个顶点的z坐标;对于每个子部分里的两条对称曲线,利用下式计算它们每个采样点z坐标:<maths num="0001"><math><![CDATA[<mrow><msub><mi>z</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mrow><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>g</mi></msup></mrow><msup><mi>z</mi><mi>g</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>g</mi></msup></mrow><msup><mi>z</mi><mi>g</mi></msup></mfrac></mrow><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001073548690000011.GIF" wi="1270" he="127" /></maths><maths num="0002"><math><![CDATA[<mrow><msubsup><mi>z</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>=</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mrow><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>g</mi></msup></mrow><msup><mi>z</mi><mi>g</mi></msup></mfrac><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>g</mi></msup></mrow><msup><mi>z</mi><mi>g</mi></msup></mfrac></mrow><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001073548690000012.GIF" wi="1358" he="150" /></maths>其中,z<sub>si</sub>和z′<sub>si</sub>分别为待求的对称曲线上采样点的z坐标,x<sub>si</sub>,x′<sub>si</sub>和y<sub>si</sub>,y′<sub>si</sub>分别为对称曲线上采样点的x,y坐标,N<sub>s</sub>(x<sup>s</sup>,y<sup>s</sup>,z<sup>s</sup>)为对称面法向量,N<sub>g</sub>(x<sup>g</sup>,y<sup>g</sup>,z<sup>g</sup>)为位于对称面内的一个向量;同时,对于每个子部分可以利用下式计算出各自一对非对称一般曲线上采样点的z坐标:<maths num="0003"><math><![CDATA[<mrow><msub><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mrow><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>-</mo><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>-</mo><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac></mrow><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001073548690000013.GIF" wi="1486" he="143" /></maths><maths num="0004"><math><![CDATA[<mrow><msubsup><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>=</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mrow><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msubsup><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>-</mo><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msubsup><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>-</mo><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>-</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>x</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>+</mo><msubsup><mi>y</mi><mrow><mi>s</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup></mrow><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup></mrow><msup><mi>z</mi><mi>s</mi></msup></mfrac></mrow><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001073548690000021.GIF" wi="1582" he="158" /></maths>其中,z<sub>gi</sub>和z′<sub>gi</sub>分别为待求的非对称一般曲线上采样点的z坐标,x<sub>gi</sub>,x′<sub>gi</sub>和y<sub>gi</sub>,y′<sub>gi</sub>分别为非对称一般曲线上采样点的x,y坐标,x<sub>si</sub>,x′<sub>si</sub>和y<sub>si</sub>,y′<sub>si</sub>分别为对称曲线上采样点的x,y坐标,x<sup>s</sup>,y<sup>s</sup>和z<sup>s</sup>分别为对称面法向量坐标;在一个子部分与另一子部分关于对称面相互对称的情形下,由其中一个子部分的非对称一般曲线利用对称性自动计算得到另一子部分的非对称一般曲线如下:<maths num="0005"><math><![CDATA[<mrow><msubsup><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><mo>(</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>)</mo><mo>&CenterDot;</mo><msub><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>-</mo><mn>2</mn><msup><mi>x</mi><mi>s</mi></msup><mo>&CenterDot;</mo><mo>(</mo><msub><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup><mo>+</mo><msub><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mrow><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow>]]></math><img file="FDA0001073548690000022.GIF" wi="982" he="119" /></maths><maths num="0006"><math><![CDATA[<mrow><msubsup><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><mo>(</mo><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>)</mo><mo>&CenterDot;</mo><msub><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>-</mo><mn>2</mn><msup><mi>y</mi><mi>s</mi></msup><mo>&CenterDot;</mo><mo>(</mo><msub><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup><mo>+</mo><msub><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mrow><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow>]]></math><img file="FDA0001073548690000023.GIF" wi="974" he="115" /></maths><maths num="0007"><math><![CDATA[<mrow><msubsup><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><mo>(</mo><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>)</mo><mo>&CenterDot;</mo><msub><mi>z</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>-</mo><mn>2</mn><msup><mi>z</mi><mi>s</mi></msup><mo>&CenterDot;</mo><mo>(</mo><msub><mi>x</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>x</mi><mi>s</mi></msup><mo>+</mo><msub><mi>y</mi><mrow><mi>g</mi><mi>i</mi></mrow></msub><mo>&CenterDot;</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mrow><msup><mrow><mo>(</mo><msup><mi>x</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>y</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>z</mi><mi>s</mi></msup><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001073548690000024.GIF" wi="1117" he="128" /></maths>其中,x<sub>gi</sub>,y<sub>gi</sub>和z<sub>gi</sub>分别为一个子部分的非对称一般曲线上采样点的x,y和z坐标,x′<sub>gi</sub>,y′<sub>gi</sub>和z′<sub>gi</sub>分别为另一子部分的非对称一般曲线上采样点的x,y和z坐标,x<sup>s</sup>,y<sup>s</sup>和z<sup>s</sup>分别为对称面法向量坐标;从而,关于对称面自身对称的物体子部分情形,根据用户指定的对称面,先利用(1)式计算出两条对称曲线上采样点的三维坐标,得到相应的三维构造曲线;再利用(2)式计算出两条非对称一般曲线上采样点的三维坐标,得到相应的三维构造曲线;对于物体中一个子部分与另一子部分关于对称面相互对称的情形,对分别属于两个子部分的2对对称曲线,首先利用(1)式分别计算出每对对称曲线上采样点的三维坐标,得到相应的三维构造曲线;然后利用(2)式计算出其中一个子部分的两条非对称一般曲线上采样点的三维坐标,得到相应的三维构造曲线;最后利用(3)式由前一子部分的两条非对称一般曲线上采样点的坐标计算出另一子部分的两条非对称一般曲线上采样点的三维坐标,得到相应的三维构造曲线;步骤3)根据生成的物体每一子部分的三维构造曲线对,利用混合方法生成表示自由形体每一子部分的曲面;对于一个子部分,由分别位于4条三维构造曲线上的4个三维空间点可以生成一个环形曲线,该环形曲线由两个半椭圆衔接而成,这两个半椭圆分别取自共享一条相同轴的两个标准椭圆的一部分,所述的相同轴是对称曲线上采样点的连线,截取的端点为公共轴的端点,两个标准椭圆各自的另一条轴可以不同;生成的环形曲线与公共轴的交点经过对称曲线上采样点,而与另一条轴的交点分别经过非对称一般曲线上采样点;这样,对4条构造曲线分别采样相同数目的采样点,并对4条曲线上相应采样点组成的集合均可以生成相应的环形曲线;物体各个子部分可以由一系列环形曲线混合生成相应曲面表示;最终由各个子部分共同组成三维对称自由形体。
地址 310014 浙江省杭州市下城区潮王路18号