autocad椭圆弧夹点拖拽怎么实现的
autocad椭圆弧有四个夹点,她的夹点拖拽算法实现的非常巧妙,不知道怎么实现的,我认为有四个未知量要解方程,但是不稳定,请问版上有人知道吗 :),个人感觉四个夹点似乎控制的就是长短轴端点,拖曳的时候,似乎只需重新更新下长短轴数据,应该不用计算太多吧。四个夹点的意义
四个夹点的意义是:1.椭圆弧中心点,2.3.椭圆弧两端点,4.椭圆弧参数中点,但是它拖拽其中一个端点夹点的时候,中心点还是中心点,其余2点还是在椭圆弧上,这个最关键就是要求出长短轴矢量来就行,但不知道具体怎么求啊 第4点是与椭圆两端点连线方向共扼的直径与椭圆弧的交点,也就是平行两端点连线与椭圆的切点。 <p>第四点不是这样求的</p> 你再点一个椭圆弧,看四个夹点的位置关系。 <p>那夹点拖拽是怎么实现的?</p> <p>经计算,拖动椭圆弧的非中心的三点中的任一点,椭圆中心位置不变,椭圆方程有三个未知数,刚好要经过三点,解是确定的,分析如下:<br/>不影响一般性,可以假设变动前的椭圆弧中心为过坐标原点(简单的UCS坐标平移就可以达到),<br/>设拖动点后椭圆的长轴(X'轴)与UCS的X轴成α角,将UCS'坐标建立在椭圆上,其方程为<br/>X'^2/a^2+Y'^2/b^2=1...............(1)<br/>UCS'与UCS坐标关系为<br/>X'=Xcosα+Ysinα....................(2)<br/>Y'=Ycosα-Xsinα....................(3)<br/>(2)、(3)两式代入(1)可得在UCS坐标下新椭圆的方程式<br/>(X^2*(cosα)^2+Y^2*(sinα)^2+2XY*sinαcosα)/(a^2)+(X^2*(sinα)^2+Y^2*(cosα)^2-2XY*sinαcosα)/(b^2)=1........(4)<br/>其中a、b、α三个变量为未知数,那么将要经过的三个点的坐标代入后可得三个等式的方程组,解是确定的。</p> <p>呵呵,谢谢了!</p>
页:
[1]
2