明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2209|回复: 7

[源码] 一些向量运算的子程序

  [复制链接]
发表于 2015-12-8 19:44:22 | 显示全部楼层 |阅读模式
本帖最后由 陨落 于 2015-12-9 09:57 编辑

话不多说,直接上源码
  1. (defun num*vec(num vec);;;;;向量数乘
  2.   (mapcar '(lambda(x) (* x num)) vec))
  3. (defun vec+vec(vec1 vec2);;;;;向量相加
  4.   (if (= (length vec1) (length vec2))
  5.     (mapcar '(lambda (x y)(+ x y))vec1 vec2)
  6.     (princ "\n出错:向量长度不一致")))
  7. (defun vec-vec(vec1 vec2);;;;;向量相减
  8.   (if (= (length vec1) (length vec2))
  9.     (mapcar '(lambda (x y)(- x y))vec1 vec2)
  10.     (princ "\n出错:向量长度不一致")))

  11. (defun vec*vec(vec1 vec2);;;;;向量数量积
  12.   (if (= (length vec1) (length vec2))
  13.     (apply '+(mapcar '(lambda (x y)(* x y))vec1 vec2))
  14.     (princ "\n出错:向量长度不一致")))
  15. (defun vecmod(vec);;;;;;向量的模
  16.   (sqrt(apply '+(mapcar '(lambda(x)(* x x)) vec))))
  17. (defun pervec(pt1 pt2);;;;两点之间的单位向量
  18.   (setq vecs(vec-vec pt2 pt1))
  19.   (num*vec(/ 1(vecmod vecs))vecs)
  20.   )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-10 18:48:57 | 显示全部楼层
(defun vec+vec(vec1 vec2);;;;;向量相加
  (if (= (length vec1) (length vec2))
    (mapcar '+ vec1 vec2)
    (princ "\n出错:向量长度不一致")))
(defun vec-vec(vec1 vec2);;;;;向量相减
  (if (= (length vec1) (length vec2))
    (mapcar '- vec1 vec2)
    (princ "\n出错:向量长度不一致")))

(defun vec*vec(vec1 vec2);;;;;向量数量积
  (if (= (length vec1) (length vec2))
    (apply '+(mapcar '* vec1 vec2))
    (princ "\n出错:向量长度不一致")))
(defun vecmod(vec);;;;;;向量的模
  (sqrt(apply '+(mapcar '* vec vec))))  可以这样写 不用lambda建立临时函数
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-9 08:15:56 | 显示全部楼层
学习一下,谢谢   
发表于 2015-12-9 15:32:57 | 显示全部楼层
感谢大师的分享
不是这些用在什么地方啊
请指点
 楼主| 发表于 2015-12-9 17:31:01 | 显示全部楼层
ynhh 发表于 2015-12-9 15:32
感谢大师的分享
不是这些用在什么地方啊
请指点

我也不是大师
在运算一些比较复杂的位置的时候,我感觉还是向量用得比较顺手
发表于 2015-12-19 06:17:46 来自手机 | 显示全部楼层
学习一下,谢谢楼主的源码
发表于 2021-12-7 20:12:38 | 显示全部楼层
请问如何实现向量旋转90度呢
发表于 2024-10-1 14:15:38 | 显示全部楼层
学习学习,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-24 11:15 , Processed in 0.187977 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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