明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3171|回复: 9

[LISP]怎样判断三点共线

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

本帖被以下淘专辑推荐:

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

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

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

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

三点不共线则成三角形

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

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

 

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

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

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

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

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

 

 

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

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

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

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

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

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

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

      很容易判断,假设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)

发表于 2024-6-4 12:44:29 来自手机 | 显示全部楼层
用向量叉积
发表于 2024-6-5 11:28:54 | 显示全部楼层
用长度判断,3点3个长度,如果2个短的等于长的就是共线,或者只要任意2个等于1个就是共线。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:38 , Processed in 0.212795 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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