明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1487|回复: 6

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

[复制链接]
发表于 2009-5-9 23:17:00 | 显示全部楼层 |阅读模式

我简单的举个例子下面是一个代码:
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的一个点

Set  AddLineXY = ThisDrawing.ModelSpace.AddLine(point, point1)      '用得到的两个点画一条直线


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

发表于 2009-5-10 01:29:00 | 显示全部楼层
应该是计算弧度引入∏(3.14)的问题
解决用:
Dim   pi  
pi=4*Atn(1)  '计算pi值.  
 楼主| 发表于 2009-5-10 09:02:00 | 显示全部楼层

pi的值是什么呀????

pi=4*Atn(1)中的1如果是一的话计算出来是180

怎么不懂了??还是那个是l弧度长?还是什么?

发表于 2009-5-10 20:52:00 | 显示全部楼层
pi是弧度,即3.14.........,不是180(角度)
你好....

发表于 2009-5-10 21:22:00 | 显示全部楼层

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

发表于 2009-5-11 18:44:00 | 显示全部楼层

在CAD中函数用到的或返回的角度都是以弧度为单位的。

你的误差就是PI的精度不够,导致数值越大误差越大。

发表于 2009-5-11 19:03:00 | 显示全部楼层
是atn不是tan
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 03:57 , Processed in 0.620743 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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