乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 100|回复: 4

[编程交流] 赫尔默特变换

[复制链接]

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 17:35:47 | 显示全部楼层 |阅读模式
有人有海默特变换的常规吗?
 
https://en.m.wikipedia.org/wiki/Helmert_transformation
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2022-7-5 18:04:28 | 显示全部楼层
也许你会感兴趣?尽管我愿意分享:
 
https://apps.autodesk.com/ACD/en/Detail/Index?id=3236793333071302608&appLang=en&os=Win32_64
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 18:20:44 | 显示全部楼层
非常感谢。但是我写了这个函数
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
229
发表于 2022-7-5 18:32:22 | 显示全部楼层
我懂了。浏览之后,我偶然发现了这个。再一次只是想我会分享。不知道这是不是你在找什么。
 
  1. ;;;;   Graphical Helmert's transformation
  2. ;;;;   ----------------------------------
  3. (defun C:Helmert ( / lun lup aun aup ang ib1 ib2 x1 y1 X2 Y2
  4.             q ib xt1 yt1 Xt2 Yt2 t1 t2 dx dy ir Xx Yy xr yr
  5.                     a1 a2 b1 2b c1 c2 sa1 sa2 sb1 sb2 sc1 sc2
  6.                     at bt qt wt wtr wtd scl et)
  7. (setq lun (getvar "LUNITS"))
  8. (setq lup (getvar "LUPREC"))
  9. (setq aun (getvar "AUNITS"))
  10. (setq aup (getvar "AUPREC"))
  11. (setq ang (getvar "ANGDIR"))
  12. (setvar "LUNITS" 2)
  13. (setvar "LUPREC" 3)
  14. (setvar "AUNITS" 2)
  15. (setvar "AUPREC" 4)
  16. (setvar "ANGDIR" 1)
  17. (setq ib1 (getpoint "\n 1òî÷êà Èñòî÷íèêà : "))
  18. (setq ib2 (getpoint ib1 "\n 1òî÷êà Öåëè : "))
  19. (setq x1 (list (car ib1)))
  20. (setq y1 (list (cadr ib1)))
  21. (setq X2 (list (car ib2)))
  22. (setq Y2 (list (cadr ib2)))
  23. (grdraw ib1 ib2 5)
  24. (setq ib1 (getpoint "\n 2òî÷êà Èñòî÷íèêà : "))
  25. (setq ib2 (getpoint ib1 "\n 2òî÷êà Öåëè : "))
  26. (setq x1 (append x1 (list (car ib1))))
  27. (setq y1 (append y1 (list (cadr ib1))))
  28. (setq X2 (append X2 (list (car ib2))))
  29. (setq Y2 (append Y2 (list (cadr ib2))))
  30. (grdraw ib1 ib2 5)
  31. (setq q "Y"
  32.    ib 2)
  33. (while (/= q "N")
  34.    (initget "Y N")
  35.    (setq q (getkword "\n Ñëåäóþùàÿ òî÷êà? Yes/No <Y> : "))
  36.    (if (or (= q "y") (= q "Y") (= q nil))
  37.      (progn
  38.        (setq ib1 (getpoint "\n Ñëåäóþùàÿ òî÷êà Èñòî÷íèêà : "))
  39.        (setq ib2 (getpoint ib1 "\n Ñëåäóþùàÿ òî÷êà Öåëè : "))
  40.        (setq x1 (append x1 (list (car ib1))))
  41.        (setq y1 (append y1 (list (cadr ib1))))
  42.        (setq X2 (append X2 (list (car ib2))))
  43.        (setq Y2 (append Y2 (list (cadr ib2))))
  44.    (setq ib (+ 1 ib))
  45.        (grdraw ib1 ib2 5)
  46.      )
  47.    )
  48. )
  49. (setq xt1 0.0
  50.    yt1 0.0
  51.    Xt2 0.0
  52.    Yt2 0.0)
  53. (foreach p x1 (setq xt1 (+ xt1 p)))
  54. (foreach p y1 (setq yt1 (+ yt1 p)))
  55. (foreach p X2 (setq Xt2 (+ Xt2 p)))
  56. (foreach p Y2 (setq Yt2 (+ Yt2 p)))
  57. (setq xt1 (/ xt1 ib))
  58. (setq yt1 (/ yt1 ib))
  59. (setq t1 (list xt1 yt1))
  60. (setq t2 (list (/ Xt2 ib) (/ Yt2 ib)))
  61. (setq dx (- (nth 0 t2) (nth 0 t1)))
  62. (setq dy (- (nth 1 t2) (nth 1 t1)))
  63. (grdraw t1 t2 6)
  64. (setq ir 0)
  65. (setq Xx nil
  66.    Yy nil
  67.    xr nil
  68.    yr nil)
  69. (while (< ir ib)
  70.    (setq Xx (append Xx (list (- (nth ir X2) (nth ir x1)))))
  71.    (setq Yy (append Yy (list (- (nth ir Y2) (nth ir y1)))))
  72.    (setq xr (append xr (list (- (nth ir x1) xt1))))
  73.    (setq yr (append yr (list (- (nth ir y1) yt1))))
  74.    (setq ir (+ 1 ir))
  75. )
  76. (setq ir 0)
  77. (setq a1 nil
  78.    a2 nil
  79.    b1 nil
  80.    b2 nil
  81.    c1 nil
  82.    c2 nil)
  83. (while (< ir ib)
  84.    (setq a1 (append a1 (list (* (nth ir Xx) (nth ir xr)))))
  85.    (setq a2 (append a2 (list (* (nth ir Yy) (nth ir yr)))))
  86.    (setq b1 (append b1 (list (* (nth ir Yy) (nth ir xr)))))
  87.    (setq b2 (append b2 (list (* (nth ir Xx) (nth ir yr)))))
  88.    (setq c1 (append c1 (list (* (nth ir xr) (nth ir xr)))))
  89.    (setq c2 (append c2 (list (* (nth ir yr) (nth ir yr)))))   
  90.    (setq ir (+ 1 ir))
  91. )
  92. (setq ir 0)
  93. (setq sa1 0.0
  94.    sa2 0.0
  95.    sb1 0.0
  96.    sb2 0.0
  97.    sc1 0.0
  98.    sc2 0.0)
  99. (while (< ir ib)
  100.    (setq sa1 (+ sa1 (nth ir a1)))
  101.    (setq sa2 (+ sa2 (nth ir a2)))
  102.    (setq sb1 (+ sb1 (nth ir b1)))
  103.    (setq sb2 (+ sb2 (nth ir b2)))
  104.    (setq sc1 (+ sc1 (nth ir c1)))
  105.    (setq sc2 (+ sc2 (nth ir c2)))
  106.    (setq ir (+ 1 ir))   
  107. )
  108. (setq at (/ (+ sa1 sa2) (+ sc1 sc2)))
  109. (setq at (+ 1 at))
  110. (setq bt (/ (- sb1 sb2) (+ sc1 sc2)))
  111. (setq qt (sqrt (+ (* at at) (* bt bt))))
  112. (setq wt (atan bt at))
  113. (setq wtr (* (1- 0) (/ (* 200.0 wt) pi)))
  114. (setq wtd (* (1- 0) (/ (* 180.0 wt) pi)))  
  115. (setq q "Y")
  116. (initget "Y N")
  117. (setq q (getkword "\n Ïðèìåíèòü ìàñøòàáèðîâàíèå? Yes/No_(q=1)/User  <Y> : "))
  118. (if (or (= q "y") (= q "Y") (= q nil))
  119.    (setq scl qt)
  120. )
  121. (if (or (= q "n") (= q "N"))
  122.    (setq scl 1.0)
  123. )
  124. (if (or (= q "u") (= q "U"))
  125.    (setq scl (getreal "User's scale : "))
  126. )
  127. (setq et (ssget))
  128. (setq q "N")
  129. (initget "N Y")
  130. (setq q (getkword "\n Ñîõðàíèòü îðèãèíàë? No/Yes <N> : "))
  131. (if (or (= q "y") (= q "Y"))
  132.    (command "_copy" et "" "0,0,0" "0,0,0")
  133. )
  134. (command "_move" et "" "_none" t1 "_none" t2)
  135. (command "_rotate" et "" "_none" t2 wtr)
  136. (command "_scale" et "" "_none" t2 scl)
  137. (princ
  138.    (strcat "\n  dY : " (rtos dx 2 3) "    dX : " (rtos dy 2 3)
  139.     "\n  w  : " (rtos wtr 2 4) "g    " (rtos wtd 2 5) "°    q : " (rtos scl 2
  140.    )
  141. )  
  142. (setvar "LUNITS" lun)
  143. (setvar "LUPREC" lup)
  144. (setvar "AUNITS" aun)
  145. (setvar "AUPREC" aup)
  146. (setvar "ANGDIR" ang)
  147. )
  148. ;======Konec
回复

使用道具 举报

0

主题

19

帖子

21

银币

限制会员

铜币
-2
发表于 2022-7-5 18:37:07 | 显示全部楼层
用英语
helmert_en。lsp
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 03:57 , Processed in 0.364464 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表