[Processing]点到线段的最小距离
PVector p1,p2,n;
float d = 0; void setup()
{
size(600,600); p1 = new PVector(150,30);//线段第一个端点
p2 = new PVector(-25,-100);//线段第二个端点 PVector vec = PVector.sub(p1,p2);
vec.normalize();
n = new PVector(-vec.y,vec.x);//与线段垂直的向量
d = n.dot(p1);
} void draw()
{
background(#CCCCCC);
translate(300,300);//重置坐标原点
strokeWeight(1);
stroke(#000000);
line(-300,0, 300,0);//画横纵轴
line(0,-300, 0,300); drawLine(p1,p2);
drawVector(n); PVector q = new PVector(mouseX-300,mouseY-300);
strokeWeight(8);
stroke(#EEEE00);//yellow
point(q.x,q.y); float temp = d - q.dot(n);
PVector nearestPnt = new PVector(n.x,n.y);
nearestPnt.mult(temp);
nearestPnt.add(q); PVector delV1,delV2;//线段上的 最近点 到两端点的向量
delV1 = PVector.sub(nearestPnt,p1);
delV2 = PVector.sub(nearestPnt,p2);
if(PVector.dot(delV1,delV2)>0)//如果两个向量的点积大于0,则最近点在线段外
{
nearestPnt = module(delV1)<module(delV2)?p1:p2;//则重置最近点到最近的端点
} drawLine(q,nearestPnt);
} //求向量的模
float module(PVector v)
{
return sqrt(pow(v.x,2)+pow(v.y,2));
} //画一条绿色的线段,端点加粗
void drawLine(PVector p1,PVector p2)
{
strokeWeight(1);
stroke(0,155,0);
line(p1.x,p1.y, p2.x,p2.y);
strokeWeight(5);
point(p1.x,p1.y);
point(p2.x,p2.y);
} //画一个红色向量,原点开始
void drawVector(PVector v)
{
int k = 50;
strokeWeight(1);
stroke(255,0,0);
line(0,0, v.x*k,v.y*k);
strokeWeight(5);
point(0,0);
}

[Processing]点到线段的最小距离的更多相关文章
- POJ 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)
A Round Peg in a Ground Hole Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4438 Acc ...
- (点到线段的最短距离)51nod1298 圆与三角形
1298 圆与三角形 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 收起 ...
- POJ - 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)
http://poj.org/problem?id=1584 题意 按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包. 再给定一个圆形(圆心坐标和半径),判断这个圆是否完全 ...
- NEU 1496 Planar map 计算几何,点到线段距离 难度:0
问题 H: Planar map 时间限制: 1 Sec 内存限制: 128 MB提交: 24 解决: 22[提交][状态][讨论版] 题目描述 Tigher has work for a lon ...
- poj1584(判断凸包+求点到线段的距离)
题目链接:https://vjudge.net/problem/POJ-1584 题意:首先要判断凸包,然后判断圆是否在多边形中. 思路: 判断凸包利用叉积,判断圆在多边形首先要判断圆心是否在多边形中 ...
- POJ 1584 A Round Peg in a Ground Hole 判断凸多边形 点到线段距离 点在多边形内
首先判断是不是凸多边形 然后判断圆是否在凸多边形内 不知道给出的点是顺时针还是逆时针,所以用判断是否在多边形内的模板,不用是否在凸多边形内的模板 POJ 1584 A Round Peg in a G ...
- sgu 1348 Goat in the Garden 2【点到线段的距离】
链接: http://acm.timus.ru/problem.aspx?space=1&num=1348 http://acm.hust.edu.cn/vjudge/contest/view ...
- Peter and Snow Blower CodeForces - 613A (点到线段距离)
大意: 给定多边形, 给定点$P$, 求一个以$P$为圆心的最小的圆环包含整个多边形. #include <iostream> #include <cmath> #define ...
- UVA 11796 - Dog Distance
题意 两条狗啊,同时跑,,同时结束,各自跑各自的道路,问跑的过程中,他们最大距离和最小距离的差: 方法 恶心一点就是,最大最小距离的求解方法,假设两只狗都只有一条线段要跑,则可以判定在端点处有最大 ...
随机推荐
- CentOS 7下启动、关闭、重启、查看MySQL服务
1.启动命令 [root@xufeng Desktop]# service mysqld startRedirecting to /bin/systemctl start mysqld.service ...
- 利用Zookeeper实现分布式锁及服务注册中心
对于Zookeeper的定义以及原理,网上已经有很多的优秀文章对其进行了详细的介绍,所以本文不再进行这方面的阐述. 本文主要介绍一些基本的准备工作以及zookeeper.net的使用. 本文源代码gi ...
- virtualbox+vagrant学习-4-Vagrantfile-1-简介
Vagrantfile Vagrantfile的主要功能是描述项目所需的机器类型,以及如何配置和提供这些机器.之所以称为Vagrantfiles,是因为文件的实际文本文件名是Vagrantfile(除 ...
- 关于Python常用框架学习
我对Python不是特别熟悉,我仅仅只知道它在Web自动化领域挺牛逼的,还有爬虫.当然了,现在的人工智能和机器学习用到它也很多. 记得六月还是七月份的时候,那个时候,突然心血来潮就开始学起了Pytho ...
- 【转】Python数据处理(四舍五入、除法部分)
转自:https://www.cnblogs.com/junyiningyuan/p/5338378.html 关于除法 传统除法 对两个整数进行除的运算,同时结果会舍去小数部分,返回一个整数.但如果 ...
- (转)LR性能测试结果样例分析
原文作者:猥琐丶欲为 传送门:http://www.cnblogs.com/hyzhou/archive/2011/11/16/2251316.html 测试结果分析 LoadRunner性能测试结果 ...
- 构建 CDN 分发网络架构
cdn基本架构: CDN的基本目的:1.通过本地缓存实现网站的访问速度的提升 CDN的关键点:CNAME在域名解析:split智能分发,引流到最近缓存节点
- 如何在C#程序中模拟域帐户进行登录操作 (转载)
.NET Core .NET Core也支持用PInvoke来调用操作系统底层的Win32函数 首先要在项目中下载Nuget包:System.Security.Principal.Windows 代码 ...
- 提取win10默认锁屏壁纸
win10锁屏设置为windows聚焦时锁屏会有好看的图片出现.想让一张好看的图片一直使用,就去提取出来然后设置一下. 找到C盘:用户目录下 找到你的主机名文件夹: 在查看的选项栏中将隐藏文件夹显示: ...
- js replace 全局替换
js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <script language="j ...