明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3841|回复: 10

算法请教

[复制链接]
发表于 2004-11-19 15:16:00 | 显示全部楼层 |阅读模式
p1,p2,p3各点的坐标已知道,如何判定p3处于p1p2的垂直范围内,如图所示意。


我的算法是,计算出来p3-p1-p2所在角的角度a和p1p3的长度,如果角度<直角,长度小于p1p2长度/tan(a),觉得这样的算法很繁代码也不少,相信有更好的算法。


如果再进一步,将p1p2更改为半径为r的圆弧,则如何处理?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-11-19 15:18:00 | 显示全部楼层
&lt3P1P2和&lt3P2P1都为锐角
发表于 2005-4-21 10:23:00 | 显示全部楼层
只要点 P1,P2, P3,在一个圆周上即说明<p1p3p2是直角,如果用计算的方法那可以用,<p3p1p2 + <p3p2p1=90度来做判断,凡是满足这个条件的点,都是符合你的要求的
发表于 2005-4-21 10:46:00 | 显示全部楼层
2楼的才正确,两个角都应该是锐角
发表于 2005-4-21 15:20:00 | 显示全部楼层
abs(p1p3^2+p2p3^2-p1p2^2)<delta


delta是一个小数字,不取0是为了忽略浮点误差带来对运算的影响
发表于 2005-5-6 16:31:00 | 显示全部楼层
可以先成立新的坐标系即以P1点为原点,P1P2(矢量,有方向)为Z轴,而而垂直于P1P2且过P1点的平面为XY平面.计算P3点在新坐标系中坐标,计算P2点在新坐标系中坐标.若P3点Z值在P1P2两点的Z值之间则符合条件
发表于 2007-2-13 16:09:00 | 显示全部楼层

我认为是这样

以P1 P2中点为圆心,P1P2为直径作圆,如果P3在圆上,则角为直角

发表于 2007-2-22 15:19:00 | 显示全部楼层
本帖最后由 作者 于 2007-2-22 18:00:20 编辑

要判断<1P3P2是不是直角?这还不简单啊!三点的坐标都知道了!算法如下:
求出P1P2连线的中点O坐标,if 线段OP3的长度=0.5X线段P1P2的长度 then <1P3P2是直角,很简单的啊!不知道搂主是不是这个意思?
发表于 2007-7-26 23:29:00 | 显示全部楼层

那么复杂干吗?很简单的啊.3点坐标已知的情况下

用getangle 函数2次,取得线段p3p1  &  p3p2的角度.

两个相减的abs   =pi/2 or 3*pi/2

几步就能得到结果.

发表于 2007-7-27 18:42:00 | 显示全部楼层

倒是想问有没有倒角的算法,两条任意连接直线的倒角,半径为R  <直线长度。

另外想请教高手对块explore以后怎么在cad中显示explore后的东西?

难道是在modelspace里面additem? 然后delete block?

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 13:30 , Processed in 0.172159 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表