判断点在线段的哪一侧(向量外积计算)

需求:

判断点B在线段SE的哪一侧。

解决方法:用向量外积的形式进行计算(适用于直线)。

  1. 生成S到E的向量vectorStoE,在生成S到B的向量vectorStoB;
  2. 然后根据两个向量的外积大小判断;
  3. 大于0:在右侧;小于0:在左侧;等于0:在线上。

代码实现:

package com.company.direction;import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;/*** @author YiDianDian*/
public class DirectionTest {public static void main(String[] args) {Point startPoint = Point.builder().x(1).y(1).build();Point endPoint = Point.builder().x(6).y(2).build();Point vectorStoE = getVector(startPoint, endPoint);Point basePoint = Point.builder().x(3).y(3).build();Point vectorStoB = getVector(startPoint, basePoint);//根据两向量的外积判断点所在的位置。Double direction = vectorStoE.getX() * vectorStoB.getY() - vectorStoE.getY() * vectorStoB.getX();if (direction < 0) {System.out.println("在右侧");} else if (direction == 0) {System.out.println("在线上");} else {System.out.println("在左侧");}}/*** 返回向量** @param startPoint* @param endPoint* @return*/private static Point getVector(Point startPoint, Point endPoint) {return Point.builder().x(endPoint.getX() - startPoint.getX()).y(endPoint.getY() - startPoint.getY()).build();}@Data@Builder(toBuilder = true)@AllArgsConstructorstatic class Point {private double x;private double y;}}

判断点在线段的哪一侧(java 代码实现)相关推荐

  1. java判断名字是否为张三_用java代码写一个判断名字是不是以K或T开头的?

    展开全部 package src; import java.util.Arrays; import java.util.Scanner; public class Assigment { public ...

  2. python判断点在直线的哪一侧_判断点在直线的哪一侧

    2.2.1下面开始程序的设计: 由于本部分需要判断空间多边形的拓扑关系,现在约定凸多边形的边界和内部,凸多边形用顶点坐标的逆时针方向序列确定.凸多边形P Q的顶点序列为p1 p2 ..pn和q1 q2 ...

  3. 判断直线与线段 是否相交 + 加入误差 故需要判断重点 poj 3304 Segments

    题目来源:http://poj.org/problem?id=3304 分析: 题目大意:给出n条线段两个端点的坐标,问所有线段投影到一条直线上,如果这些所有投影至少相交于一点就输出Yes!,否则输出 ...

  4. Java代码判断数据库中某张表是否存在

    最近在开发一个同步数据的统计任务的时候遇到一个问题:要在Java代码中判断数据库中某张表是否存在,查资料后,总结了以下两种方法: 1.使用JdbcTemplate bean public boolea ...

  5. 怎么在Java里辨别小数_求教java中如何判断一个数是不是小数,求详细代码及解释...

    求教java中如何判断一个数是不是小数,求详细代码及解释 关注:62  答案:2  mip版 解决时间 2021-01-29 22:49 提问者孤酒醉人心 2021-01-29 03:13 求教jav ...

  6. 如何判断2个线段相交

    判断 2 个线段相交有很多方法,最直接的方法就是直接计算两条直线的交点,然后看看交点是否分别在这两条线段上.这样的方法很容易理解,但是代码实现比较麻烦. 还有一种常用的方法是通过向量叉积来判断的,这种 ...

  7. 判断两条线段是否相交 java_判断两个线段是否相交02

    写在前面 在其他博客中看到这方面的知识,很多都是重复,并且说的总是云里雾里的,所以这里我就自己总结一下这种问题如何求解,判断两个线段是否相交在前面我们提到了会用到叉积的一点知识,那么这里就来详细说一下 ...

  8. 判断三维空间两线段是否相交(附代码)

    文章目录 一.推导过程 二.MATLAB代码   博文: 计算几何--判断两线段是否相交,提供了判断两线段是否相交的方法以及代码.然而,只是考虑了平面的情况.本博文提供一种简单有效的方法判断三维空间两 ...

  9. 中秋节图案 用java代码打出来_基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法.doc...

    基于Java代码实现判断春节.端午节.中秋节等法定节假日的方法 基于Java代码实现判断春节.端午节.中秋节等法定节假日的方法 这篇文章主要介绍了基于Java代码实现判断春节.端午节.中秋节等法定节假 ...

最新文章

  1. 将DBF,XLS,XML,MDB文件导入C#DataGrid的方法
  2. select框高度问题
  3. VO 2 具体的过程
  4. mysql 5.5 目录_Windows Server 2008 R2下修改MySQL 5.5数据库目录
  5. 第四周实践项目5 猴子选大王(循环链表)
  6. 震惊!快速幂怎么编?省一说暴力,银牌说递归,国集听完笑了
  7. Java并发– CyclicBarrier示例
  8. 简洁UI好玩的文字转换emoji表情微信小程序支持句子词语转换_源码
  9. 深入ASP.NET 2.0的提供者模型
  10. 16G DWDM SFP+光模块特性及解决方案
  11. 360实景地图插件 html,谷歌360全景地图让你足不出户欣赏美景
  12. 移动硬盘插到电脑后显示在设备和打印机解决办法
  13. 金融科技发展布局之服务渠道建设
  14. 火狐浏览器插件开发小试
  15. 厂家深度解读:采用凯夫拉中底的劳保鞋优点有哪些?
  16. via自定义搜索引擎代码_Via浏览器自定义主页
  17. 计算机c语言lms算法,lms算法(毕业论文).doc
  18. opencv的透视变换(投影变换)
  19. 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
  20. 让代理服务器支持HTTPS很难吗?

热门文章

  1. matlab中1代表什么颜色,利用matlab如何在一个图中表示不同颜色得点
  2. php中的时间戳_PHP 时间戳 timestamp
  3. 离散点连成曲线(三次样条插值)
  4. 【JAVA-1】JDK、JRE安装及卸载,有手就会!
  5. 2023年中南财经政法大学应用统计考研上岸前辈初复试备考经验
  6. 新学期幼儿园致家长的一封信
  7. Linux运维之初识shell
  8. vue如何使用elementui分页器,前端分页器
  9. 3dMax先蒙皮刷权重,再附加合并
  10. C语言实现因式分解输出