与cu相切的角度/斜率
有人能帮忙吗在vb中。net如何找到给定点相对于X轴的切线与曲线的角度?
这也必须是象限敏感的吗? 不知道vb。net,但您需要的函数/表达式是“反正切”,所以请寻找类似的函数/表达式。在lisp中是“atan”。是的,它是象限敏感的,正切线会给你一个0-90度的结果,负切线是90-180度。
**编辑**发现这个,可能会有帮助:
本例使用Math类的Atan方法计算pi的值。
Public Function GetPi() As Double
' Calculate the value of pi.
Return 4.0 * Math.Atan(1.0)
End Function 3d曲线的一般方法是:
1、选择曲线
2.使用(DatabaseServices.curve.GetClosestPointTo)在曲线上拾取点(Point3d)
3.使用(DatabaseServices.Curve.GetFirst导数(Geometry.Point3d))获取一阶导数(Geometry.Vector3d)
4、获取与系统的角度。数学Atan(Geometry.Vector3d.Y/Geometry.Vector3d.X) 啊,非常感谢 那么,我如何计算它在哪个象限,这样我就可以计算出‘切线法线’。? Tan对于象限1和3是正的,对于象限2和4是负的,因此正结果表示向量在x轴的0-pi/2处,加或减pi;负π/2-π,加或减π。
我想你可以添加编码,通过π弧度来校正角度,这样你只能得到一个介于0和π之间的答案,那么切线的法线就是弧tan+pi/2。
这是一个纯二维问题,还是你对切线的副法线也感兴趣? 不,这纯粹是二维的。
谢谢你-我改变了代码,所以它现在可以工作了。
这就是我所拥有的。
Public Function CalcAngle(ByVal ObjCurve As AcadNetDbServices.Curve, ByVal Dist As Double)
Dim Radians As Double
Dim Degrees As Double
Dim Point1 As AcadNetGeometry.Point3d = ObjCurve.GetPointAtDist(Dist)
Dim firstderiv As AcadNetGeometry.Vector3d = ObjCurve.GetFirstDerivative(Point1)
Radians = Math.Atan2(Cdbl(firstderiv.Y) , Cdbl(firstderiv.X))
Degrees = Radians * (180 / Math.PI)
'If in positive quadrants then = 180 - abs.Degrees
'If in Negative quadrants then = Abs.Degrees - 180
If Degrees < 0 Then
Degrees = (Math.Abs(Degrees)) + 180
Else
Degrees = 180 - (Math.Abs(Degrees))
End If
CalcAngle = Degrees
End Function
不确定为什么要为任何积极结果设置度=180度。假设它最初是在45度计算的,这不是一个好答案吗?但是我不知道你用它做什么。。。 我对vb了解不多。net(事实上我对它一无所知),但是当你找到一阶导数时,它不返回向量吗那么你就可以从向量中准确地知道切线的方向。 导数给出切线的斜率。
使用atan2获取与其相切的弧。
此外,我必须在正象限中使用度=180角,因为我得到的答案是175和115,而它应该是5和65等等
谢谢你们的帮助。
这很有效
页:
[1]
2