明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1579|回复: 4

遇到一个关于运算结果的烦心问题

[复制链接]
发表于 2007-3-21 23:39:00 | 显示全部楼层 |阅读模式

我的目的:求一与一直线和一圆弧同时相切并相交的已知半径圆的圆心坐标。

我通过计算的出了圆心坐标,通过跟踪看出计算结果就是实际的位置,而且求得的圆在CAD下与已知线与圆弧操作Trim等命令都有效,说明没有错误。

因为满足相切条件的圆可能有多个,我求出了所有满足半径及相切条件的所有圆,

然后利用IntersectWith判断这些圆是否都与已知线与圆弧实际都相交,

但是IntersectWith得出的结论是不相交!导致求得实际应该为结果的圆心坐标并没成为计算结果。

这应该是浮点运算后产生的误差所致的吧。怎样才能使浮点运算后结果产生的误差最小?

或我的计算思路应该怎么改变?

求一能解决问题的方法。万分感谢!

发表于 2007-3-22 09:22:00 | 显示全部楼层

利用浮点数运算不可避免的会产生误差.所以做浮点运算时不能用到"="号.而必须与一个极小数相比较,进行判断.

比如一个浮点数判断其是否为0.不能用

    const PI=3.141592653589793

    dim TestNum as double

    testnum=sin(pi/4)

    if testnum-sqr(2)/2=0 then

       ........

    end if

这时if语句的判断一定为假.而我们知道其该为真.解决方法是将0改为一极小值

    const JudgeNum=0.0001

    if abs(testnum-sqr(2)/2)<judgenum then

       .................

    endif

这是该语句的判断就为真了.

我想你遇到的该是这样的问题.

 楼主| 发表于 2007-3-22 23:08:00 | 显示全部楼层

不是的。我知道这个问题。

我只是在计算过程没有进行取舍,我也没有用到判断语句,只是最后利用了IntersectWith进行了一下判断有没有交点而已。

发表于 2007-3-23 10:46:00 | 显示全部楼层
IntersectWith在相切的时候不返回切点
 楼主| 发表于 2007-3-23 22:35:00 | 显示全部楼层
lzh741206发表于2007-3-23 10:46:00IntersectWith在相切的时候不返回切点

我没有用IntersectWith的结果,只是判断了一下其有没有值而已。

IntersectWith能判定是否相交,我用同样方法判断一与两直线同时相交且相切的圆时就可以的。但是换成一直线一圆时就不行了,而且是在判断与圆相交时出的问题。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-2 06:32 , Processed in 0.150847 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表