明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 619|回复: 9

[提问] 已知空间两点和距离求第三点

[复制链接]
发表于 2023-9-29 22:10 | 显示全部楼层 |阅读模式
已知空间两点

起点  A  , 方向点  B ,从A点开始的距离 L

求目标点C的坐标值

也就是从 A 向 B 出发距离为 L 的目标点 C

C有可能是AB之间,也可能是AB延长线上

谢谢








"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-9-30 07:36 | 显示全部楼层
本帖最后由 cable2004 于 2023-9-30 07:45 编辑

两点的差得到向量v, MAT:Unitization (v)算出向量v的单位长度,再乘以长度l。lisp忘记了自己试试。

v = (mapcar '- p2 p1)



;;;-----------------------------------------------------------;;
;;; 单位向量                                                      ;;
;;; Unit Vector - Lee Mac                                     ;;
;;; Args: v - vector in R^n                                      ;;
;;;-----------------------------------------------------------;;
(defun MAT:Unitization (v)
  ( (lambda (n)
      (if (equal 0.0 n 1e-14)
        nil
        (MAT:vxs v (/ 1.0 n))

    )
    )
    (MAT:norm v)
  )
)


;;;-----------------------------------------------------------;;
;;; 向量的模(长度)                                              ;;
;;; Vector Norm - Lee Mac                                             ;;
;;; Args: v - vector in R^n                                      ;;
;;;-----------------------------------------------------------;;
(defun MAT:norm ( v )
  (sqrt (apply '+ (mapcar '* v v)))
)


;;;-----------------------------------------------------------;;
;;; 向量乘标量(系数)                                              ;;
;;; Vector x Scalar - Lee Mac                                      ;;
;;; Args: v - vector in R^n, s - real scalar                      ;;
;;;-----------------------------------------------------------;;
(defun MAT:vxs ( v s )
  (mapcar (function (lambda ( n ) (* n s))) v)
)



l = (distance '(0 0 0) v)


发表于 2023-9-30 08:27 | 显示全部楼层
  1. (setq
  2.         a (getpoint )
  3.         b (getpoint a)
  4.         an(angle a b)
  5.         dis 6
  6.         c(polar a an dis)
  7. )

点评

angle函数 只是当前绘图平面上 pt1 点至 pt2 点连线的夹角  发表于 2023-9-30 10:17
发表于 2023-9-30 08:31 | 显示全部楼层
本帖最后由 mahuan1279 于 2023-9-30 09:48 编辑

线性组合。PC=PA*(distance(PA,PB)-L)/distance(PA,PB)  +PB*L/distance(PA,PB)
(mapcar '(lambda (x y) (+ (* x ( / (- (distance PA PB) L) (distance PA PB))) (* y (/ L (distance PA PB))))) PA PB)
发表于 2023-9-30 10:09 | 显示全部楼层
  1. (defun abc (a b l / sc)
  2.   "沿空间两点的距离点"
  3.   (setq sc (/ l (distance a b) 1.))
  4.   (mapcar '(lambda (x y) (+ x (* (- y x) sc))) a b)
  5. )
 楼主| 发表于 2023-9-30 10:45 | 显示全部楼层
本帖最后由 ynhh 于 2023-9-30 10:53 编辑
cable2004 发表于 2023-9-30 07:36
两点的差得到向量v, MAT:Unitization (v)算出向量v的单位长度,再乘以长度l。lisp忘记了自己试试。

v  ...

谢谢老师
在您说的基础上我反复摸索
您说的最后再加上一步
加上起点对应的XYZ
就对了
谢谢您,祝您国庆愉快,身体健康。
 楼主| 发表于 2023-9-30 10:47 | 显示全部楼层
本帖最后由 ynhh 于 2023-9-30 10:52 编辑

谢谢您的帮助
您这个测试只能是平面上用
谢谢您,祝您国庆愉快,身体健康。
 楼主| 发表于 2023-9-30 10:49 | 显示全部楼层
mahuan1279 发表于 2023-9-30 08:31
线性组合。PC=PA*(distance(PA,PB)-L)/distance(PA,PB)  +PB*L/distance(PA,PB)
(mapcar '(lam ...

谢谢您的指导
您的几何能力与专注研究
在明经上都是很牛的
您的方法的确好用,也省去那些向量之类的应用
祝您国庆节愉快,身体健康
 楼主| 发表于 2023-9-30 10:52 | 显示全部楼层

谢谢版主院长的出手指导
院长的超能力一直是大家敬仰的
您的这个经测试的确好用
还最精简
有如神助
祝您
身体健康
节日愉快
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 00:52 , Processed in 0.227367 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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