首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从坐标确定矩形的算法

从坐标确定矩形的算法
EN

Stack Overflow用户
提问于 2010-11-06 19:52:42
回答 3查看 1.9K关注 0票数 4

我有一个由绘制的矩形(freestyle)组成的用户输入。现在这个绘制的图形并不完美,所以我想根据一个算法为它们重新绘制形状。

我有一堆来自用户绘图的坐标。我想找出最大的(x,y)和最低的(x,y)坐标,并使用它们之间的距离来确定矩形的对角线。

但是我很难确定最大的(x,y)坐标和最低的(x,y)坐标。

我不能拿最大的y和最大的x,或者最大的x和最大的y作为例子,因为可能用户只是在他们的队伍中意外地突出了一下。(这有意义吗?)

假设下面是用户绘制的线条。如果我使用最大的y和最大的x,我就得不到想要的坐标(因为它会在意外突出的地方找到坐标)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                       ----
                      /    \
                 ----/      \--------                 -----        --
  --------------/                    \---------------/     \------/  \--

希望你能理解我的意思..

我猜另一种方式是,我希望坐标最接近(0,0),如果我的画布是1000 x 1000,我希望第二个坐标最接近(1000,1000)。(两个极端坐标)

有没有人能帮上忙呢?

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-06 20:01:16

如果你想找到离(0,0)最近的点,那就找到它!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
point FindClosestToOrigin(point[] P)
{
  point closest = P[0];
  foreach(point p in P)
  {
      if (DistanceOriginS(p) < DistanceOriginS(closest)) closest = p;
  }
  return closest;
}
float DistanceOriginS(point p)
{
   return p.x*p.x + p.y*p.y;
}

您可以轻松地修改算法,以找到最接近其余屏幕边缘的点。

票数 1
EN

Stack Overflow用户

发布于 2010-11-06 20:28:10

根据您希望算法生成的矩形适合用户输入的程度,您可以尝试以下操作:

  1. 求所有x和y坐标的平均值,得到矩形的中心(Xc,Yc)。
  2. 找出最高和最低的x值,从最高值中减去最低值,然后除以2。对y值重复上述步骤。让我们称这些为X和Y (s代表‘边’)。
  3. 重要的角(左上角和右下角)将变成(Xc - Xs,Yc - Ys)和(Xc + Xs,Yc + Ys )。
  4. 根据需要绘制线条。

现在,这将为您提供一个包围框,其中包含所有用户给定点。如果您正在寻找更多最佳拟合类型的算法,请将步骤2中的(max - min) /2函数替换为平均函数。一个简单的方法可能只涉及将点平均到中心点的一侧(上方/下方或左侧/右侧),并使用这些点作为距中心的偏移量。请注意,这将为您提供四个偏移量,其中只有两个您将在任何给定的时间使用。

这里展示的粗略想法可以根据您期望的用户输入类型(例如,您期望的扭曲程度)进行调整。可以使用线性回归线进行进一步的改进,假设您能够通过点本身或通过用户输入方法(例如,使用离散的动作而不是一次绘制所有矩形的每一条边)。

希望这个快速示例将为您指明正确的方向。

票数 2
EN

Stack Overflow用户

发布于 2010-11-06 19:54:50

只需对所有点进行平均,并将其用作矩形边的位置。当然,这假设你能够区分矩形的四条边,否则你可以尝试一种方法将坐标分成四条边(通过检查水平和垂直变化与某个阈值),然后计算每条边的平均值,并将其调整为连接边。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4114889

复制
相关文章
python自动下载并更新chromedriver驱动
python用senium调用chrome时,需要使用chromedriver驱动,这个驱动需要对应chrome的版本。 而chrome又经常在后台偷偷升级,如果没关掉升级,之前的驱动又用不了。 其实用webdriver-manager听说也可以,但是他要到国外下载驱动,没办法使用。 这点很愁人,所以我这边开发了一个python自动下载并更新chromedriver驱动的程序。
星痕
2022/03/04
2.4K0
Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」
这个报错一般都是第一次学习使用selenium自动化框架的时候出现的,主要的原因是因为selenium模拟的客户端对浏览器的操作,但没有找到相应浏览器的驱动导致的
全栈程序员站长
2022/08/18
6.7K0
Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」
Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程
我们在做爬虫的时候经常要使用谷歌浏览器驱动,今天分享下这个Chromedriver 插件的安装方法。
全栈程序员站长
2022/08/26
2.1K0
Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程
安装Selenum的Chromedriver
http://chromedriver.storage.googleapis.com/index.html
老高的技术博客
2022/12/27
3250
安装Selenum的Chromedriver
Python 和 Selenium 的浏览器爬虫
Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操作,方便各种 Web 应用的自动化测试。
HoneyMoose
2023/09/20
3980
Python 和 Selenium 的浏览器爬虫
铬镍不锈钢的切削加工
  1Cr18Ni9Ti不锈钢的强度硬度很低(硬度≤187HB),而塑性很高,具有良好的耐酸性、耐腐蚀性。经固溶处理后的机械性能,屈服强度s0.2≥205MPa,抗拉强度sb≥520MPa,伸长率d5≥40%,收缩率y≥50%,用常规牌号的硬质合金刀具和常规方法加工很困难,原因是该材料的塑性及韧性较大,容易产生粘刀现象,断屑困难,同时产生振动,使刀具容易崩刃、磨损。
lrglu
2022/03/30
6640
铬镍不锈钢的切削加工
分享一个chromedriver谷歌浏览器驱动全部下载网址
https://npm.taobao.org/mirrors/chromedriver/
我去热饭
2022/05/18
1.1K0
java selenium chromedriver浏览器驱动放在哪里?【两种位置】
这个位置可以自己指定 比如将驱动放在项目根路径 D:\a-project\mqtest\ 需要在代码中指明driver的路径(绝对路径或相对路径),代码如下
小黑同学
2020/08/16
3.9K0
java selenium浏览器驱动 chromedriver放在哪里?【两种位置】
这个位置可以自己指定 比如将驱动放在项目根路径 D:\a-project\mqtest\ 需要在代码中指明driver的路径(绝对路径或相对路径),代码如下
小黑同学
2022/05/10
2.7K0
java selenium浏览器驱动 chromedriver放在哪里?【两种位置】
windows chromedriver 下载失败
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
云雀叫了一整天
2019/09/29
1.1K0
chromedriver 换了116的版本,还是不行?
前几天在Python最强王者群【我叫石国志】问了一个selenium使用过程中浏览器驱动报错的问题,下图是他的报错截图。
前端皮皮
2023/09/11
4650
chromedriver 换了116的版本,还是不行?
Xilinx下载器驱动提示“系统找不到指定的路径”的解决办法
本篇记录了本人解决xilinx下载器驱动安装问题(装驱动提示错误如下图)。主要过程就是更新到win10,再重装驱动即可,最后测试在Vivado2015.3中可以成功下载调试。
FPGA技术江湖
2020/12/30
1.5K0
Xilinx下载器驱动提示“系统找不到指定的路径”的解决办法
mac 搭建selenium与ChromeDriver环境安装 selenium安装 ChromeDriver验证安装
下载后,将安装包加入到环境变量。以mac系统为例,将chromedriver移至/usr/bin目录下即可
章鱼喵
2018/09/26
3.9K0
mac 搭建selenium与ChromeDriver环境安装 selenium安装 ChromeDriver验证安装
centos7安装chromedriver
2.安装chromedriver(需要下载与chrome版本匹配的安装包) 下载:https://npm.taobao.org/mirrors/chromedriver/
薛定喵君
2019/11/06
1.9K0
Mac OS环境配置chromedriver
selenium之 chromedriver与chrome版本映射表(更新至v2.29)
freesan44
2018/09/05
2.2K0
linux配置chrome和chromedriver
开始我报错是这样的:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions
川川菜鸟
2021/10/18
1.8K0
Python 网页抓取库和框架
作为 Python 开发人员,您可以使用许多 Web 抓取工具。现在就来探索这些工具并学习如何使用它们。
用户8847084
2021/07/27
3.1K0
Web网页自动化实战《1.利用py第三方库selenium完成艺龙网访问操作》
安装python3.5以上版本,不要装最新版本,最新版本的python可能会有bug,老版本更稳定一些。
清菡
2022/06/21
7460
Web网页自动化实战《1.利用py第三方库selenium完成艺龙网访问操作》
安装Chrome(Headless)并在python中使用
Chrome(Headless)即为Chrome的Headless模式,又称为无头浏览器
wo.
2021/06/15
3.7K0
点击加载更多

相似问题

找不到硒铬驱动程序

10

硒WebDriver -找不到铬二进制

710

铬驱动器-硒

31

硒找不到chromedriver.exe

26

码头硒/节点-铬-量角器找不到铬二进制

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文