本帖最后由 yshf 于 2012-6-18 22:51 编辑
设直线上的一点为P1,直线上另一点为P2,直线外任一点为P3,
则P3到直线P1P2的距离为:d=2×三角形P3P1P2的面积÷P1到P2的距离。
测试程序如下:
- ;点到直线的距离 yshf
- (defun c:test()
- (setq cm (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (if (setq p1 (getpoint "\n直线段第一个端点:"))
- (if (setq p2 (getpoint p1 "\n直线段第二个端点:"))
- (while (setq p3 (getpoint "\n直线外的任一点<回车结束>:"))
- (command "_area" p3 p1 p2 "")
- (setq d (/ (* 2.0 (getvar "area")) (distance p1 p2)))
- (princ (strcat "\n点到直线的距离=" (rtos d 2 10)))
- )
- )
- )
- (setvar "cmdecho" cm)
- (princ)
- )
|