乐筑天下

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

GetNormal与GetNormal(容差)

[复制链接]

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-10-15 10:29:21 | 显示全部楼层 |阅读模式
有人能告诉我有什么区别吗?将公差传递给正常函数应该返回什么?我问是因为我使用的是Gile的point3d.IsBetween几何扩展,我无法让它工作。具体代码是:公共静态bool Is在中间(这个Point3d pt、Point3d p1、Point3d p2、公差tol)。
{。
返回p1.GetVectorTo(pt),获取正常(tol),等于(pt.GetVectorTo(p2)。获取正常(tol));。
}我传入的点离我使用起点和终点的线的中心线0.000001,无论我传入的tol值是什么,我都无法让此方法返回true。我创建了一个新的公差,其中10和10作为向量和点的值,但我仍然得到一个false作为返回值。所以......知道我做错了什么吗?。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-10-15 11:23:48 | 显示全部楼层

我是脑死亡的,因为它已经过了我的就寝时间,但是:
你作为一个托尔通过什么?
类似于
新的公差(1e-9, 1e-9)  
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 11:26:20 | 显示全部楼层
新公差(10,10)
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 11:37:41 | 显示全部楼层

我假设整数将被转换为双精度数,但我相信这“应该”可行。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 14:02:09 | 显示全部楼层
public Vector3d Get正常()。
{。
全球公差=Tolerance.Global;。
返回this.GetNormal(全局);。
}。

传入Tolerance.Global,看看是否有效?Tolerance.Global看起来像是有一个公共设置器,所以......公共静态容忍全球。
{。
获取。
{。
公差公差;。
false*voidPtr=((IntPtr)*(((long*)&__imp_?gTol@AcGeContext@@2VAcGeTol@@A))),ToPointer();。
memcpy((长)和公差), voidPtr,0x30);。
返回公差;。
}。
设置。
{。
memcpy(*((长*)&__imp_?gTol@AcGeContext@@2VAcGeTol@@A)),((长)&值),0x30);。
}。
}。

回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 14:05:21 | 显示全部楼层
它不起作用。这就是为什么我想知道它应该如何工作。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 15:26:18 | 显示全部楼层
嗨,我写的代码是错误的。试试这种方式:公共静态bool Is在中间(这个Point3d pt、Point3d p1、Point3d p2、双公差)。
{。
公差tol=新公差(公差,公差);。
返回p1.GetVectorTo(pt),Get正常(),IsEqualTo(pt.GetVectorTo(p2)。Get正常(),tol);。
}请记住,此函数正在比较两个单位向量,因此容差等于2.0或上限将始终返回true。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 16:53:53 | 显示全部楼层
吉尔,你能解释一下公差值是怎么工作的吗。假设我想检查点A是否在点B和C之间,公差为.001。换句话说,如果我在点A创建了一个半径为.001的球体,我会考虑点A在点B与C之间。如果该球体与两点B和C间的线相交,那么我会考虑它在两者之间。然而,该函数的公差不遵循此模型。
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-10-15 17:00:44 | 显示全部楼层
在我看来,如果一个向量等于另一个向量,那么我们必须比较方向和大小。我们不应该比较单位向量而不是法线吗?
**编辑**我想现在我稍微仔细考虑一下,法线向量会得到相同的结果,因为根据定义,它们的长度都是1,与单位向量相同。
话虽如此,我不确定必须传递给函数的公差值。问鸭子没有帮助。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2015-10-15 17:40:41 | 显示全部楼层
someVector.GetNormal()返回某个向量的单位向量。
所以,如果从p1到pt的单位向量等于从pt到p2的单位向量,这意味着pt在p1和p2之间。
在这种情况下,公差用于比较单位向量,而不考虑p1、pt和p2之间的距离,我同意这不是很相关...
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 21:54 , Processed in 0.199285 second(s), 72 queries .

© 2020-2025 乐筑天下

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