世人皆醉 发表于 2024-12-16 20:37:16

如何求一个圆上面固定长度的两个点的位置

本帖最后由 世人皆醉 于 2024-12-16 21:43 编辑


[*](defun c:c3()
[*](setvar "cmdecho" 0) ;关闭普通命令提示信息
[*](setvar "osmode" 0);关闭对象捕捉状态
[*](command "._undo" "_begin")
[*](setq d1(getreal"请输入圆管的直径:"))
[*](setq PT0(GETPOINT "请输入圆管的长度:"))
[*]
[*](setvar "osmode" 16383);打开对象捕捉状态
[*](command "._undo" "_end")
[*](princ))
[*]
如上图所示,29和1.8都是常量,固定不变的,只有直径是变量,我想要画出上图所示,无论直径多少,都能求出29和1.8与直径的交点,每次都卡在画圆弧这个阶段,后面发现可能是位置坐标没找准,故前来请教!望大佬赐教。

kozmosovia 发表于 2024-12-16 20:37:17

本帖最后由 kozmosovia 于 2024-12-16 22:33 编辑

设半径为R,圆心为C,则
ang=(atan (/ 14.5 (sqrt (* R R)(* 14.5 14.5))))
p1=(polar C (- (* 0.5 pi) ang) R)
p2=(polar C (+ (* 0.5 pi) ang) R)
p1 p2就是上面两个开口的点
下面的点同样原理计算

llsheng_73 发表于 2024-12-16 21:06:34

除了直径看明白了,29和1.8都没看懂

ljpnb 发表于 2024-12-16 21:09:41

1、先画圆,取了圆心坐标
2、用勾股定理计算出另一条边的长度: sqrt(- (* 225 225)(* 14.5 14.5))
3、以圆心为参考点,根据29/2和另一条边的长度,找到圆上指定点

世人皆醉 发表于 2024-12-16 21:53:50

ljpnb 发表于 2024-12-16 21:09
1、先画圆,取了圆心坐标
2、用勾股定理计算出另一条边的长度: sqrt(- (* 225 225)(* 14.5 14.5))
3、以 ...

第三个点能详细一点么,14.5和另外一条边的长度为啥能找到圆上指定点啊

世人皆醉 发表于 2024-12-16 21:55:56

llsheng_73 发表于 2024-12-16 21:06
除了直径看明白了,29和1.8都没看懂

可能我没描述的清楚,大概意思就是29和1.8是固定不变的,我就是要在圆上面开个29*1.8的豁口无论这个圆的直径是多少

xyp1964 发表于 2024-12-16 23:45:27

本帖最后由 xyp1964 于 2024-12-17 20:14 编辑

;; 圆开豁口



;; 交互慢动作


gzcsun 发表于 2024-12-17 13:04:56

ang=(atan (/ 14.5 (sqrt (* R R)(* 14.5 14.5))))
应该是
ang=(atan (/ 14.5 (sqrt (- (* R R)(* 14.5 14.5)))))

世人皆醉 发表于 2024-12-17 13:17:29

kozmosovia 发表于 2024-12-16 22:32
设半径为R,圆心为C,则
ang=(atan (/ 14.5 (sqrt (* R R)(* 14.5 14.5))))
p1=(polar C (- (* 0.5 pi) a ...

感觉有点问题啊,第一个是平方相加么,这个最后我测量的数据是14.3左右,不精准啊

世人皆醉 发表于 2024-12-17 13:19:31

xyp1964 发表于 2024-12-16 23:45
;; 圆开豁口

是这个意思,大佬能分享一下么?
页: [1] 2
查看完整版本: 如何求一个圆上面固定长度的两个点的位置