乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 126|回复: 14

[编程交流] 与cu相切的角度/斜率

[复制链接]

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 14:58:37 | 显示全部楼层 |阅读模式
有人能帮忙吗
 
在vb中。net如何找到给定点相对于X轴的切线与曲线的角度?
 
这也必须是象限敏感的吗?
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 15:06:47 | 显示全部楼层
不知道vb。net,但您需要的函数/表达式是“反正切”,所以请寻找类似的函数/表达式。在lisp中是“atan”。是的,它是象限敏感的,正切线会给你一个0-90度的结果,负切线是90-180度。
 
**编辑**发现这个,可能会有帮助:
 
本例使用Math类的Atan方法计算pi的值。
 
  1. Public Function GetPi() As Double
  2.    ' Calculate the value of pi.
  3.    Return 4.0 * Math.Atan(1.0)
  4. End Function
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:11:28 | 显示全部楼层
3d曲线的一般方法是:
 
1、选择曲线
2.使用(DatabaseServices.curve.GetClosestPointTo)在曲线上拾取点(Point3d)
3.使用(DatabaseServices.Curve.GetFirst导数(Geometry.Point3d))获取一阶导数(Geometry.Vector3d)
4、获取与系统的角度。数学Atan(Geometry.Vector3d.Y/Geometry.Vector3d.X)
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 15:12:37 | 显示全部楼层
啊,非常感谢
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 15:18:24 | 显示全部楼层
那么,我如何计算它在哪个象限,这样我就可以计算出‘切线法线’。?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:20:45 | 显示全部楼层
Tan对于象限1和3是正的,对于象限2和4是负的,因此正结果表示向量在x轴的0-pi/2处,加或减pi;负π/2-π,加或减π。
 
我想你可以添加编码,通过π弧度来校正角度,这样你只能得到一个介于0和π之间的答案,那么切线的法线就是弧tan+pi/2。
 
这是一个纯二维问题,还是你对切线的副法线也感兴趣?
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 15:25:48 | 显示全部楼层
不,这纯粹是二维的。
 
谢谢你-我改变了代码,所以它现在可以工作了。
 
这就是我所拥有的。
 
  1. [size=2][color=#0000ff]Public Function [/color][/size][size=2]CalcAngle([/size][size=2][color=#0000ff]ByVal [/color][/size][size=2]ObjCurve [/size][size=2][color=#0000ff]As [/color][/size][size=2]AcadNetDbServices.Curve, [/size][size=2][color=#0000ff]ByVal [/color][/size][size=2]Dist [/size][size=2][color=#0000ff]As [/color][/size][size=2][color=#6f002f]Double[/color][/size][size=2])
  2. [/size][size=2][color=#008000]
  3. [/color][/size][size=2][color=#0000ff]Dim [/color][/size][size=2]Radians [/size][size=2][color=#0000ff]As [/color][/size][size=2][color=#6f002f]Double
  4. [/color][/size][size=2][color=#0000ff]Dim [/color][/size][size=2]Degrees [/size][size=2][color=#0000ff]As [/color][/size][size=2][color=#6f002f]Double
  5. [/color][/size][size=2][color=#0000ff]Dim [/color][/size][size=2]Point1 [/size][size=2][color=#0000ff]As [/color][/size][size=2]AcadNetGeometry.Point3d = ObjCurve.GetPointAtDist(Dist)
  6. [/size][size=2][color=#0000ff]Dim [/color][/size][size=2]firstderiv [/size][size=2][color=#0000ff]As [/color][/size][size=2]AcadNetGeometry.Vector3d = ObjCurve.GetFirstDerivative(Point1)
  7. Radians = Math.Atan2([/size][size=2][color=#0000ff]Cdbl[/color][/size][size=2](firstderiv.Y) , [/size][size=2][color=#0000ff]Cdbl[/color][/size][size=2](firstderiv.X))
  8. Degrees = Radians * (180 / Math.PI)
  9. [/size][size=2][color=#008000]'If in positive quadrants then = 180 - abs.Degrees
  10. 'If in Negative quadrants then = Abs.Degrees - 180
  11. [/color][/size][size=2][color=#0000ff]If [/color][/size][size=2]Degrees < 0 [/size][size=2][color=#0000ff]Then
  12. [/color][/size][size=2]Degrees = (Math.Abs(Degrees)) + 180
  13. [/size][size=2][color=#0000ff]Else
  14. [/color][/size][size=2]Degrees = 180 - (Math.Abs(Degrees))
  15. [/size][size=2][color=#0000ff]End If
  16. [/color][/size][size=2]CalcAngle = Degrees
  17. [/size][size=2][color=#0000ff]End Function
  18. [/color][/size]
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 15:32:19 | 显示全部楼层
不确定为什么要为任何积极结果设置度=180度。假设它最初是在45度计算的,这不是一个好答案吗?但是我不知道你用它做什么。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:33:19 | 显示全部楼层
我对vb了解不多。net(事实上我对它一无所知),但是当你找到一阶导数时,它不返回向量吗那么你就可以从向量中准确地知道切线的方向。
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 15:37:37 | 显示全部楼层
导数给出切线的斜率。
 
使用atan2获取与其相切的弧。
 
此外,我必须在正象限中使用度=180角,因为我得到的答案是175和115,而它应该是5和65等等
 
谢谢你们的帮助。
 
这很有效
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 22:31 , Processed in 2.618920 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表