objectarx之判断三点是否在一条直线上

bool CCommonFuntion::IsOnLine(AcGePoint2d& pt1, AcGePoint2d& pt2, AcGePoint2d& pt3)
{
AcGeVector3d vec1 = AcGeVector3d(pt2.x - pt1.x, pt2.y - pt1.y, 0);
AcGeVector3d vec2 = AcGeVector3d(pt3.x - pt1.x, pt3.y - pt1.y, 0);
double pi = 3.14159265;// 35897931;
//double angle = vec1.angleTo(vec2);
double angle = ((int)((vec1.angleTo(vec2)) * 100000000 + 0.5)) / 100000000.0;
if (angle == pi || angle == 0)
return true;
else
return false;
}

原文地址:https://www.cnblogs.com/Pond-ZZC/p/11813607.html

时间: 2024-11-02 20:05:01

objectarx之判断三点是否在一条直线上的相关文章

判断两条直线的位置关系 POJ 1269 Intersecting Lines

两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, p2, p3, p4,直线L1,L2分别穿过前两个和后两个点.来判断直线L1和L2的关系 这三种关系一个一个来看: 1. 共线. 如果两条直线共线的话,那么另外一条直线上的点一定在这一条直线上.所以p3在p1p2上,所以用get_direction(p1, p2, p3)来判断p3相对于p1p2的关

随机生成一份试卷,试卷的种类分为单选、多选、判断三种题型。nodejs6.0 mysql

背景:从数据库中,随机生成一份试卷,试卷的种类分为单选.多选.判断三种题型. 首先我需要生成随机数id(在这之前我需要知道数据库中各个题型的题数,这样我才能设置随机数),并依据生成的随机数id,去查找对应的题目.而在js的数组操作中,有filter.splice.concat.every.find等等.我需要从数据库中取出特定的数据,而我返回的是一组对象,那么我需要过滤出特定的部分. 代码如下: var danxuan = getRandomNum(danxuan_count,20);var d

hdu 4885 (n^2*log(n)判断三点共线建图)+最短路

题意:车从起点出发,每次只能行驶L长度,必需加油到满,每次只能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 开始时候直接建图,在范围内就有边1.跑最短了,再读题后发现,若几个点共线,且都在范围内,那么中间有点的俩头的点就不能有边,否则与条件相悖.关键是怎么用n^2*logn,的复杂度判断三点共线:点先按X排序,考察每个点i时候,第二个点j,若直线ij斜率已经存在,则不能添加了,查找是否存在,用容器就行(map\set)都是logn的,所以满足要求.之后最短路即可. #

写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,、。。。。。

.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息"a,b,c不能构成三 角形",如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个 整数,调用此方法,并捕获异常. 代码: package exception; import java.util.Scanner; public class SanJiao { public stati

hdu 4885 TIANKENG’s travel (最短路+判断三点共线)

TIANKENG's travel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 408    Accepted Submission(s): 100 Problem Description TIANKENG has get a driving license and one day he is so lucky to find a

异常处理:写一个方法void triangle(inta,intb,int c),判断三个参数是否能构成一个三角形。

写一个方法void triangle(inta,intb,int c),判断三个参数是否能构成一个三角形.如果不能则抛出异常IllegalArgumentException,显示异常信息:a,b,c "不能构成三角形":如果可以构成则显示三角形三个边长.在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常. import java.util.Arrays;import java.util.Scanner; public class ExceptionTest1 { public

判断三点是顺时针还是逆时针方向

设   p1=(x1,y1),   p2=(x2,y2),   p3=(x3,y3)       求向量            p12=(x2-x1,y2-y1)              p23=(x3-x2,y3-y2)       则当   p12   与   p23   的叉乘(向量积)           p12   x   p23   =   (x2-x1)*(y3-y2)-(y2-y1)*(x3-x2)       为正时,p1-p2-p3   路径的走向为逆时针,    为负时,

判断两条直线是否相交点

#pragma mark ------------ 判断两条直线是否相交 + (BOOL)checkLineIntersection:(CGPoint)p1 p2:(CGPoint)p2 p3:(CGPoint)p3 p4:(CGPoint)p4 {     CGFloat denominator = (p4.y - p3.y) * (p2.x - p1.x) - (p4.x - p3.x) * (p2.y - p1.y);          if (denominator == 0.0f) {

Linux与云计算——第二阶段 第三章:SSH服务器架设(上)openssh 基础

Linux与云计算--第二阶段Linux服务器架设 第三章:SSH服务器架设(上)openssh 基础 1.密码认证 配置SSH服务器以便远程主机连接访问 [1] 即使你在安装CentOS系统的时候选择了最小化安装,OpenSSH也会被默认安装,所以你不需要再安装任何额外的软件包来实现该功能.缺省情况下你可以通过密码实现远程访问,如果需要增强安全性,建议还是要修改部分配置. [[email protected] ~]# vim /etc/ssh/sshd_config # line 49:去掉备