husteagle 发表于 2009-7-4 21:48:00

autocad椭圆弧夹点拖拽怎么实现的

autocad椭圆弧有四个夹点,她的夹点拖拽算法实现的非常巧妙,不知道怎么实现的,我认为有四个未知量要解方程,但是不稳定,请问版上有人知道吗

qjchen 发表于 2009-7-5 12:11:00

:),个人感觉四个夹点似乎控制的就是长短轴端点,拖曳的时候,似乎只需重新更新下长短轴数据,应该不用计算太多吧。

husteagle 发表于 2009-7-5 12:54:00

四个夹点的意义

四个夹点的意义是:1.椭圆弧中心点,2.3.椭圆弧两端点,4.椭圆弧参数中点,但是它拖拽其中一个端点夹点的时候,中心点还是中心点,其余2点还是在椭圆弧上,这个最关键就是要求出长短轴矢量来就行,但不知道具体怎么求啊

chenjun_nj 发表于 2009-7-5 20:54:00

第4点是与椭圆两端点连线方向共扼的直径与椭圆弧的交点,也就是平行两端点连线与椭圆的切点。

husteagle 发表于 2009-7-5 21:42:00

<p>第四点不是这样求的</p>

chenjun_nj 发表于 2009-7-6 11:04:00

你再点一个椭圆弧,看四个夹点的位置关系。

chenjun_nj 发表于 2009-7-6 13:10:00

husteagle 发表于 2009-7-6 14:16:00

<p>那夹点拖拽是怎么实现的?</p>

chenjun_nj 发表于 2009-7-6 14:27:00

<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>

husteagle 发表于 2009-7-6 15:37:00

<p>呵呵,谢谢了!</p>
页: [1] 2
查看完整版本: autocad椭圆弧夹点拖拽怎么实现的