明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2553|回复: 7

[LISP]怎样判断三点共线

[复制链接]
发表于 2006-8-2 18:00 | 显示全部楼层 |阅读模式
怎样判断三点共线

本帖被以下淘专辑推荐:

  • · 工具|主题: 71, 订阅: 4
发表于 2006-8-2 19:35 | 显示全部楼层

斜率,判断是否相等,(x1-x2)/(y1-y2)=(x3-x1)/(y3-y1)

发表于 2006-8-3 15:25 | 显示全部楼层

斜率判断法
这个式子不适用于 y1 = y2 = y3 的情况

三点不共线则成三角形

a. 两边之和大于第三边
b. 面积不为零

要考量/排除同一点位值的情况

 

发表于 2006-8-3 16:34 | 显示全部楼层

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=48974

参见几何算法中矢量叉积和折线拐向的问题可以解决

发表于 2006-8-3 16:50 | 显示全部楼层

(= (angle pt1 pt2) (angle pt1 pt32))

 

 

发表于 2006-8-4 10:06 | 显示全部楼层

三点所组成的三角形面积等于零。

X1(y2-y3)+x2(y3-y1)+x3(y1-y2)=0

发表于 2006-8-4 11:20 | 显示全部楼层

(< (abs (sin (- (angle  pt1 pt2) (angle pt2 pt3)))) diff)

diff为允许误差,其值约为角度的弧度差值

发表于 2006-8-12 15:18 | 显示全部楼层

      很容易判断,假设p1,p2是一条直线的两点,p3是任意一点,三点之间构成的边长长度分别为L_p1p2,L_p1p3,L_p2p3,(总长)三边之和为L_3p,其中最大的一条边为L_max,则判断如下:

1、如果3点均在一条线上,那么最长的一条边应等于两条短边之和。

(=  L_max  (*  L_3p  0.5))

2、如果点p3在直线p1,p2之间,那么直线的长度L_p1p2必然是最大一条边L_max。

(=  L_p1p2  L_max)

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

本版积分规则

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

GMT+8, 2024-5-18 21:03 , Processed in 0.209510 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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