![]() |
【求助】如何把这个程序补充完整并用matlab也能实现啊
我原本是想通过matlab实现二维图形的裁剪,但是matlab中没有直接的椭圆窗口裁剪函数,我在网上搜到其c语言伪代码但是我不会用c语言写全 请会的朋友帮忙把下面的程序写完整 如果能够告诉我如何实现matlab和C的混合编程更好 谢谢
设椭圆的中心点即为坐标轴的中点O,被裁剪线段的两端点分别为A(xa,ya)B(xb,yb)(xa≤xb)。算法的具体裁剪过程用伪代码表述如下:其中,(x1,y1)、(x2,y2):分别为裁剪后所得线段的两个端点;Da 、Db:分别为线段两端点到椭圆焦点的距离之和;P(xp,yp):中心点O 到AB垂足;Lr:平行于AB且与椭圆相切的CD 线段到中心点的距离。 if (xa = =xb ) { if (xa>a) break; //被裁剪线段完全位于椭圆窗口外 else x1=x2=xa; } else if (ya= =yb) { if (ya>b) break; //被裁剪线段完全位于椭圆窗口外 else y1=y2=ya; } else if (min{xa, xb}≥a 或max{xa, xb}≤-a 或min{ya, yb}≥ b 或max{ya, yb}≤-b) break; //被裁剪线段完全位于椭圆窗口外 else if(Da<2a&&Db<2a) { x1=xa; y1=ya; x2=xb; //线段完全位于椭圆窗口内 y2=yb; break; } else if( Da<2a&&Db>2a 或 Da>2a&&Db<2a) 求(x1,y1)、(x2,y2); else { if(xa<xb<xp 或者xp<xa<xb) break; //线段完全位于椭圆窗口外部 else if(xa<xp<xb) { if(Lp<2a ) //点P 位于椭圆窗口内部 求(x1,y1)、 (x2,y2); break; else { if(Lp>Lr) break; //被裁剪线段完全位于椭圆外部 else 求(x1,y1)、(x2,y2); } } else break; // 线段与椭圆无交点,完全位于椭圆外部 |
所有时间均为北京时间。现在的时间是 11:11。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.