⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.7.4 曲线求交.htm

📁 计算机图形学教程计算机图形学教程
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0058)http://www.ekany.com/wdg98/cg/contents/chapter2/les274.htm -->
<HTML><HEAD><TITLE>2</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<P align=justify><B><FONT face=楷体_GB2312 size=4>2.7.4 曲线求交</FONT></B></P>
<P align=justify><FONT face=楷体_GB2312 size=4>本小节中我们讨论曲线间交点的求法。</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>1、直线段与参数曲线的交点</FONT></FONT></P>
<P align=justify><FONT face=楷体_GB2312 
size=4>以直线段与三次参数曲线求交为例。这时交点可以有一至三个。假设直线参数方程为</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>        </FONT>P(t)=A+Bt</FONT></P>
<P align=justify><FONT face=楷体_GB2312 size=4>曲线的参数方程为</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>        </FONT>q(u)=Cu<SUP>3</SUP>+Du<SUP>2</SUP>+Eu+F</FONT></P>
<P align=justify><FONT face=楷体_GB2312 size=4>在交点处有方程</FONT></P>
<BLOCKQUOTE>
  <BLOCKQUOTE>
    <BLOCKQUOTE>
      <BLOCKQUOTE>
        <P align=justify><FONT face=楷体_GB2312 
      size=4>P(t)=q(u)</FONT></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P align=justify><FONT face=楷体_GB2312><FONT size=4>即 
</FONT>Cu<SUP>3</SUP>+Du<SUP>2</SUP>+Eu+F=A+Bt</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT size=4>用(</FONT>A B<FONT 
size=4>)点乘两边得</FONT></FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT size=4>        (A 
B)·(Cu<SUP>3</SUP>+Du<SUP>2</SUP>+Eu+F)=0</FONT></FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>可以用求根公式或数值方法解出一至三个</FONT>u<FONT size=4>的实根。</FONT></FONT></P>
<OL start=2>
  <LI><FONT face=楷体_GB2312 size=4>圆锥曲线与参数曲线的交点</FONT> </LI></OL>
<P align=justify><FONT face=楷体_GB2312 
size=4>圆锥曲线与参数曲线求交,可以把参数曲线方程代入圆锥曲线的隐函数方程得到参数的一元高次方程,然后使用一元高次方程的求根方法解出交点参数,对于低于四次的方程可以用求根公式求解,对于四次以上的方程则用数值方法求解。也可以把圆锥曲线也表示为参数形式,转化为下面要讨论的参数曲线与参数曲线的求交问题。</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>3、参数曲线与参数曲线的交点</FONT></FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT size=4>假设两条空间曲线的方程为P(u)=(x(u), y(u), 
z(u)), P(t)=(x’(t), y’(t), z’(t)),对它们求交相当于求解方程</FONT></FONT></P>
<P align=justify><FONT face=楷体_GB2312 size=4>P(u)-Q(t)=0</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>这是有三个方程式的二元高次方程组,可使用其中两个方程式对u, 
t求解,再用第三个方程式对解进行验证。求解部分相当于求曲线在某个坐标面上的投影曲线之间的交点。实际上,绝大多数曲线求交问题是在二维平面(如曲面的参数域)上进行的,可以用传统的数值方法求解</FONT></FONT><FONT 
face=System></P></FONT>
<P><FONT face=楷体_GB2312 size=4><IMG height=49 
src="2.7.4 曲线求交.files/Image168.gif" width=113></FONT></P>
<P align=justify><FONT face=楷体_GB2312 size=4>得到交点。</FONT></P>
<P align=justify><FONT face=楷体_GB2312><FONT 
size=4>也可以用常用曲线的凸包性质,或人为建立凸包的方法,对曲线建立凸包。当两曲线的凸包相交时,把曲线分割为两条子线段,对子线段建立凸包,然后重复进行凸包的求交判断。这样一直进行到凸包小于一定尺寸,把凸包内的曲线上的某一点(如中点)作为交点或用该点作为初始点估计,用数值方法进行迭代求解更精确的交点参数与坐标。常用的凸包有两种:一种是利用曲线控制多边形直接作为凸包,如Bezier曲线的控制多边形,见图2.7.2。</FONT></FONT></P>
<P align=center><FONT face=楷体_GB2312 size=4><IMG height=205 
alt="2_7_2.gif (19555 bytes)" src="2.7.4 曲线求交.files/2_7_2.gif" width=283><IMG 
height=156 alt="2_7_2a.gif (11368 bytes)" src="2.7.4 曲线求交.files/2_7_2a.gif" 
width=229></FONT></P>
<P align=center><FONT face=楷体_GB2312 size=4>图2.7.2</FONT></P>
<P align=justify><FONT face=楷体_GB2312 
size=4>还有一种方法是在曲线的切线水平和垂直处把曲线分为若干段,对每段建立与坐标轴平行的长方形包围盒,称为区间包围盒。如果两条曲线上有两子段的包围盒相交,则把这两条子曲线段都进一步分割成两个更短的曲线段,分别建立包围盒,然后重复进行包围盒的求交测试。当包围盒尺寸充分小时,其中的点作为交点,或用于数值方法的初解,如图2.7.3所示,为这种方法使用的长方形包围盒。</FONT></P>
<P align=center><FONT face=楷体_GB2312 size=4>&nbsp; <IMG height=268 
alt="2_5_2.gif (4875 bytes)" src="2.7.4 曲线求交.files/2_5_2.gif" 
width=607></FONT></P>
<P align=center><FONT face=楷体_GB2312><FONT size=4>图</FONT>2.5.2 Bezier<FONT 
size=4>曲线的控制多边形作为凸包</FONT></FONT></P>
<P align=center><FONT face=楷体_GB2312 size=4><IMG height=236 
alt="2_5_3.gif (5201 bytes)" src="2.7.4 曲线求交.files/2_5_3.gif" 
width=529></FONT></P>
<P align=center><FONT face=楷体_GB2312 size=4>图2.5.3 曲线的区间包围盒</FONT></P>
<P> </P>
<P><A href="http://www.ekany.com/wdg98/cg/contents/chapter2/les273.htm"><FONT 
face=楷体_GB2312>&lt;上一节〉</FONT></A><FONT face=楷体_GB2312>&nbsp;&nbsp;&nbsp; <A 
href="http://www.ekany.com/wdg98/cg/contents/chapter2/les281.htm">〈下一节〉</A> 
&nbsp;&nbsp;&nbsp; <A 
href="http://www.ekany.com/wdg98/cg/tutorial/chapter2/lesson2-7.htm">〈返回〉</A></FONT></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -