乐筑天下

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

新点平面靠近原始点

[复制链接]

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-5 15:12:21 | 显示全部楼层 |阅读模式
我一直试图避开ACAD的共线错误。
如果我有直线,我知道我可以得到起点、终点和法线的X、Y和Z的双精度值。
ACAD的帮助说,“你可以添加这个法向量到一个点,以获得另一个点。”
我确实可以使用另一个点,该点与基于其当前法线的直线的起点和终点的XY平面平行,但不共线。新点离起点的距离应该与终点离起点的距离相同。
有人有这样做的示例代码吗?我一整天都在拔头发。谢谢,戴夫

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

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

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-5 16:24:52 | 显示全部楼层
这是我正在处理的一个示例:
命令:对齐
选择对象:找到的所有13个
选择对象:
指定第一个源点:-13.073282044755,77.307053104084,105.082384708192
指定第一个目标点:0,0,0
指定第二个源点:-13.073282044755,71.945120358405,109.122890845077
指定第二个目标点:1000,0,0
指定第三个源点或

-13.5751299524,-87772.934478884,66304.2898050485
3个源点共线。
前两个点和最后一个点之间的距离离第三个点太远了,以至于ACAD搞砸了。
我甚至在前面添加了ACAD新闻组的这个功能/pre>
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-5 17:11:10 | 显示全部楼层
我发现的唯一解决方案是得到线的中点,测量它,然后得到从起点到最后一个中点的中点,然后重复,直到谷值小于十。然后使用小于 10 的一条线的起始点和中点,并且还对另一条线执行此过程,并使用其中间点(一次小于 10)作为第三个 alin 点。
天哪!
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 18:20:06 | 显示全部楼层
您可以将ucs设置为该行的ocs,即-
xvec=line.normal
yvec=normalise(line.ep-line.sp)
zvec=xvec.crossproduct(yvec)
使用这些设置您的新ucs,然后您可以在ucs中创建一个新点(0, linellong,0),该ucs将是该行平面中沿x轴的行长。
hth,
Mick。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-5 22:42:09 | 显示全部楼层
谢谢Mick,
但是我不知道该怎么做。
我最终这样做了:
我有两行是从被分解的同一个平面区域中检索出来的。我将第一行除以长度,直到它小于10。
我对第二行做了同样的操作。我已经确定它们不在同一直线上,因为我确定第一条线的手柄不是第二条线的手柄,我创建了一个圆和射线,并检查是否相交。
然后,我将第一条线的起点和终点用作前两个对齐点,将第二条线的起点或终点用作第三个对齐点。
成功了!这是蛮力,但绝不是精英。但我必须完成它,我有一种感觉,我不会结束你要说的话。我真的不知道。
您编写了以下代码:
XV EC = line . normal
yvec = normalise(line . EP-line . sp)
zvec = XV EC . cross product(yvec)
XV EC = line . normal
yvec = normalise(line . EP-line . sp)
zvec = XV EC . cross product(yvec)
我不能发布我现有的代码,因为它太大了。谢谢,戴夫
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 00:15:48 | 显示全部楼层
啊,你试图在代码中做一个“对齐”是吗?
xvec等是向量,如你所说,它们是3个doubles的数组。
您可以通过减去或加上其他向量来创建其他向量。下面的piccy用2d解释,3d也一样简单。
一旦有了至少两个矢量,就可以通过简单的矢量数学运算创建一个ucs。
如果您正在进行对齐,您可以从您的线创建一个向量,然后从线法线创建另一个向量,该向量乘以线长度。将新的vec添加到由线sp创建的vec,您将有两条互相垂直的线用于对齐。
我将尝试绘制另一个piccy。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 00:26:23 | 显示全部楼层
创建新点画的2d演示
主体与3d相同,无论法线指向哪里都可以工作。一个向量加上另一个向量会产生第三个向量。这个向量的值实际上是新的点值。
这就是向量可能变得令人困惑的原因,它们很容易与点混淆,因为两个向量可以具有完全相同的值,但位于2个不同的地方(即它们使用不同的sp和ep的say计算不同)
理解的最佳方法是在2d中做一些非常简单的数学来“证明”结果,它会变得清晰。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-6 04:48:04 | 显示全部楼层
我想我开始明白了。
首先...
SP=StartPoint
EP=EndPoint
NP=NewPoint
通过从线的端点减去起始点,我们产生向量
我们也可以从线的法线产生向量,但我们将其乘以线长。我的猜测是,通过减法检索到的另一个向量是基于线长的,我们希望第二个向量共享相同的比率。
到目前为止这是正确的吗?
谢谢一堆
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 05:03:21 | 显示全部楼层
是啊!
抱歉,ep/sp等。不太清楚戴夫。
空间中的每个点都可以表示为一个矢量,因此sp和ep都可以用作矢量来进行一些简单的矢量数学运算。通过加/减向量,你产生一个新的向量,它的尾部(sp)从原点开始,头部(ep)在新点结束。
就像我说的,如果你画一个2d网格并保持数字简单,就很容易直观地看到计算和结果。
请注意,我们不需要延长法线,我们可以将它添加到sp并生成另一个点,尽管离sp很近(只有1个单位的距离)。我延长了法线,所以这三个点之间的比例是一样的,这就是我认为你想要达到的效果。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-9-6 05:08:01 | 显示全部楼层
酷米克。
现在是凌晨2点。让我咀嚼一天左右,然后看看我能做些什么。
我有一种感觉,它会变得更多,但至少到那时我会完全理解。
谢谢你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 12:38 , Processed in 1.041405 second(s), 72 queries .

© 2020-2025 乐筑天下

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