ynhh 发表于 2023-9-29 22:10:46

已知空间两点和距离求第三点

已知空间两点

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

求目标点C的坐标值

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

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

谢谢








cable2004 发表于 2023-9-30 07:36:39

本帖最后由 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:29

(setq
        a (getpoint )
        b (getpoint a)
        an(angle a b)
        dis 6
        c(polar a an dis)
)

mahuan1279 发表于 2023-9-30 08:31:23

本帖最后由 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)

xyp1964 发表于 2023-9-30 10:09:24


(defun abc (a b l / sc)
"沿空间两点的距离点"
(setq sc (/ l (distance a b) 1.))
(mapcar '(lambda (x y) (+ x (* (- y x) sc))) a b)
)

ynhh 发表于 2023-9-30 10:45:42

本帖最后由 ynhh 于 2023-9-30 10:53 编辑

cable2004 发表于 2023-9-30 07:36
两点的差得到向量v, MAT:Unitization (v)算出向量v的单位长度,再乘以长度l。lisp忘记了自己试试。

v...
谢谢老师
在您说的基础上我反复摸索
您说的最后再加上一步
加上起点对应的XYZ
就对了
谢谢您,祝您国庆愉快,身体健康。

ynhh 发表于 2023-9-30 10:47:08

本帖最后由 ynhh 于 2023-9-30 10:52 编辑

飞雪神光 发表于 2023-9-30 08:27

谢谢您的帮助
您这个测试只能是平面上用
谢谢您,祝您国庆愉快,身体健康。

ynhh 发表于 2023-9-30 10:49:41

mahuan1279 发表于 2023-9-30 08:31
线性组合。PC=PA*(distance(PA,PB)-L)/distance(PA,PB)+PB*L/distance(PA,PB)
(mapcar '(lam ...

谢谢您的指导
您的几何能力与专注研究
在明经上都是很牛的
您的方法的确好用,也省去那些向量之类的应用
祝您国庆节愉快,身体健康

ynhh 发表于 2023-9-30 10:52:27

xyp1964 发表于 2023-9-30 10:09


谢谢版主院长的出手指导
院长的超能力一直是大家敬仰的
您的这个经测试的确好用
还最精简
有如神助
祝您
身体健康
节日愉快
页: [1]
查看完整版本: 已知空间两点和距离求第三点