jiwei2200 发表于 2009-5-9 23:17:00

[讨论] 请大家探讨一下用VB二次开发cad中的计算误差问题,该怎么解决?

我简单的举个例子下面是一个代码:
Public Function GetPointAR(ByVal ptBase As Variant, ByVal angle As Double, ByVal Length As Double) As Variant

    Dim pt(0 To 2) As Double
   
    pt(0) = ptBase(0) + Length * Cos(angle)
    pt(1) = ptBase(1) + Length * Sin(angle)
    pt(2) = ptBase(2)
   
    GetPointAR = pt
End Function         '这是一个得到和已知点偏移一定角度和距离的点的自定义函数
Dim yuanxing(0 To 2) As Double
Dim point As Variant
Dim point1 As Variant
Dim AddLineXY As AcadLine
yuanxing(0 )=0:yuanxing(1 )=0:yuanxing(2 )=0
point=GetPointAR(yuanxing,3.14-50*3.14/180,5)      '从圆心用函数得到偏移-50度距离5的一个点
point1=GetPointAR(yuanxing,-50*3.14/180,5)         '从圆心用函数得到偏移130度距离5的一个点
SetAddLineXY = ThisDrawing.ModelSpace.AddLine(point, point1)      '用得到的两个点画一条直线

画完之后我发现我画的这条直线   居然不过
                圆心的那个点有误差
                ????
请问高手们有没有遇到过这中情况,是我的算法有错误?还有因为
                计算弧度引入∏(3.14)的问题?
怎么解决?谢谢
                了!!!

azjmjsj 发表于 2009-5-10 01:29:00

应该是计算弧度引入∏(3.14)的问题
解决用:
Dim   pi   
pi=4*Atn(1)'计算pi值.

jiwei2200 发表于 2009-5-10 09:02:00

pi的值是什么呀????
pi=4*Atn(1)中的1如果是一的话计算出来是180
怎么不懂了??还是那个是l弧度长?还是什么?

azjmjsj 发表于 2009-5-10 20:52:00

pi是弧度,即3.14.........,不是180(角度)
你好....

雪山飞狐_lzh 发表于 2009-5-10 21:22:00

atn(1)=45度,。。。。

gdzhou 发表于 2009-5-11 18:44:00

在CAD中函数用到的或返回的角度都是以弧度为单位的。
你的误差就是PI的精度不够,导致数值越大误差越大。

wuyunpeng888 发表于 2009-5-11 19:03:00

是atn不是tan
页: [1]
查看完整版本: [讨论] 请大家探讨一下用VB二次开发cad中的计算误差问题,该怎么解决?