跳转到主要内容

编程

LISP的表达式求值

表达式一般来说有三种:前缀表达式、中缀表达式、后缀表达式,其中后缀表达式又叫做逆波兰表达式。中缀表达式是最符合人们思维方式的一种表达式,顾名思义,就是操作符在操作数的中间。而前缀表达式和后缀表达式中操作符分别在操作数的前面和操作数的后面。在写表达式,我们一般用中缀表达式,譬如 1+2*3-4/5。并且按照操作符的优先级进行计算。
然而LISP语言是一种前缀表达式,为了把表达式转为LISP函数或者求值,需要进行翻译,添加大量的括号和修改函数的顺序。
这个程序的目的就是使得这一工作变简单。
当然,CAD里面本身也有几种种方式能完成这个,但它们的优缺点容我后面讨论。
程序借鉴了飞诗的一些代码,在此深表感谢。
程序的核心代码如下:

椭圆论

对椭圆的研究。其中有大量的使用函数:
包括椭圆的展开,椭圆的相交,椭圆的作图,椭圆的面积,周长算法以及与椭圆相关的方程等较为高级知识。
下面是代码:

圆论

对CAD中圆和弧的研究。包括如下内容:
圆和弧的基本要素,圆的和弧的周长 ,面积,质心;
它们的种种作图法,譬如三点画圆,三切线画圆等;
它们与点、圆和直线的关系及其判断。
等等 。
下面是相关代码:

矩阵论

对CAD中矩阵及其相关知识的研究.
包括了线性代数的一些基本知识;
矩阵的基本运算;
矩阵的基本变换;
实体的矩阵及其变换;
方程求解和矩阵的求逆、矩阵的特征解;
等等。

下面是其实现的相关代码: