ynhh 发表于 2021-12-20 09:55:07

用单点坐标复制或移动或计算求另一点

本帖最后由 ynhh 于 2021-12-20 11:30 编辑

用单点坐标复制或移动或计算求另一点

已知三点: A,P1,P2

未知点 B 与 P2 和 A 与 P1 的相对关系相同

求 B点? 是用复制还是移动还是什么方法?

谢谢


start4444 发表于 2021-12-20 11:13:08

polar 不行?

ynhh 发表于 2021-12-20 11:23:08

start4444 发表于 2021-12-20 11:13
polar 不行?

我一直以为用复制或移动的方法,应更简单一些,以前好象见过,但一下找不到方法了。
还是老老实实的用你说的方法写一个:
方法比较笨,见笑了。
(defun c:tt ()
(setq DQBZ (getvar "OSMODE"));获取当前捕捉
(SETVAR "OSMODE" 15);设置捕捉系统变量
(setq ptA (getpoint "\n目标点 A")
pt1 (getpoint "\n基点 1:")
pt2 (getpoint pt1 "\n基点 2:")
)
(setq alph (angle pt1 ptA));引出两点的弧度alph
(setq alf (* 180.0 (/ alph pi)));求出角度值alf
(setq le (distance pt1 ptA));两点间距离
(setq ptB (polar pt2 alph le));求出未知点
(SETVAR "OSMODE" 0);设置捕捉系统变量为0 即关闭捕捉
(command "point" ptB "");画点 应事先关闭捕捉
(SETVAR "OSMODE" DQBZ);恢复之前捕捉
)

lijiao 发表于 2021-12-20 13:43:19

本帖最后由 lijiao 于 2021-12-20 13:45 编辑

(setq b (mapcar '(lambda(x y z) (- (+ x y) z)) a pt2 pt1))或者
(setq b (mapcar '+ a (mapcar '- pt2 pt1)))

ynhh 发表于 2021-12-20 14:20:10

lijiao 发表于 2021-12-20 13:43
(setq b (mapcar '(lambda(x y z) (- (+ x y) z)) a pt2 pt1))或者
(setq b (mapcar '+ a (mapcar '- pt2...

谢谢您的指导,完全正确
您这太高大上了,简洁到难以想象。
谢谢您。

xyp1964 发表于 2021-12-20 15:01:45

(polar A (angle p1 p2)(distance p1 p2))

ynhh 发表于 2021-12-20 15:17:06

xyp1964 发表于 2021-12-20 15:01
(polar A (angle p1 p2)(distance p1 p2))

更简洁的组合方式,还没有自变量,不错:handshake
谢谢院长
页: [1]
查看完整版本: 用单点坐标复制或移动或计算求另一点