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

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

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;">我简单的举个例子下面是一个代码:<br/>Public Function GetPointAR(ByVal ptBase As Variant, ByVal angle As Double, ByVal Length As Double) As Variant<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Dim pt(0 To 2) As Double<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;pt(0) = ptBase(0) + Length * Cos(angle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;pt(1) = ptBase(1) + Length * Sin(angle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;pt(2) = ptBase(2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;GetPointAR = pt<br/>End Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '这是一个得到和已知点偏移一定角度和距离的点的自定义函数<br/>Dim yuanxing(0 To 2) As Double<br/>Dim point As Variant<br/>Dim point1 As Variant<br/>Dim AddLineXY As AcadLine<br/>yuanxing(0 )=0:yuanxing(1 )=0:yuanxing(2 )=0<br/>point=GetPointAR(yuanxing,3.14-50*3.14/180,5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'从圆心用函数得到偏移-50度距离5的一个点<br/>point1=GetPointAR(yuanxing,-50*3.14/180,5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '从圆心用函数得到偏移130度距离5的一个点<br/><br/>Set&nbsp;&nbsp;AddLineXY = ThisDrawing.ModelSpace.AddLine(point, point1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'用得到的两个点画一条直线<br/><br/><br/>画完之后&nbsp;&nbsp;我发现&nbsp;&nbsp;我画的这条直线&nbsp;&nbsp; 居然不过
                圆心的那个点&nbsp;&nbsp;有误差
                ????<br/>请问高手们&nbsp;&nbsp;有没有遇到过这中情况&nbsp;&nbsp;,是我的算法有错误?还有因为
                计算弧度引入∏(3.14)的问题?<br/>怎么解决&nbsp;&nbsp;?&nbsp;&nbsp;谢谢
                了!!!</p>

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

应该是计算弧度引入∏(3.14)的问题<br/>解决用:<br/><font color="#000000">Dim &nbsp; pi&nbsp;&nbsp; <br/>pi=4*Atn(1)&nbsp;&nbsp;'计算pi值.&nbsp;&nbsp;</font>

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

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

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

pi是弧度,即3.14.........,不是180(角度)<br/>你好....<br/><br/>

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

<p>atn(1)=45度,。。。。</p>

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

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

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

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