标签: geometry

用ggplot2画一个圆圈

也许这是一个愚蠢的问题,但我找不到ggplot2手册中的答案,也没有找到"阿姨"谷歌......

如果我有一个中点和一个直径,如何用ggplot2绘制一个圆作为附加图层?谢谢你的帮助.

geometry r ggplot2

55
推荐指数
6
解决办法
3万
查看次数

CSS中的圆圈中的文本垂直和水平居中(如iphone通知徽章)

我正在寻找一种在CSS3中使用跨浏览器类似iPhone的徽章的方法.我显然想为此使用一个div,但替代解决方案会很好.重要的因素是它需要在所有浏览器中水平和垂直居中.

关于这些通知的一个有趣的设计问题是它们不能具有指定的宽度(高度是固定的) - 它们应该能够处理[在ascii绘图中](1)和(1000),其中(1000)不是一个完美的圆形圆,但看起来更像是一个胶囊.

编辑:附加约束(来自史蒂文):

  • 没有JavaScript
  • 没有将display属性重命名为table-cell,这是一个有问题的支持状态

css geometry cross-browser css3 css-shapes

54
推荐指数
4
解决办法
10万
查看次数

计算旋转矩形中的最大矩形

我正在尝试找到计算最大(面积)矩形的最佳方法,该矩形可以包含在旋转的矩形内.

一些图片应该有助于(我希望)可视化我的意思:

具有给定宽度和高度的输入矩形 按角度旋转erctangle 输出内部矩形

给出输入矩形的宽度和高度,以及旋转它的角度.输出矩形不会旋转或倾斜.

我正沿着漫长的路线往下走,我甚至不确定它是否会处理角落的情况(没有双关语).我确信这有一个优雅的解决方案.有小费吗?

编辑:输出矩形点不一定要触摸输入矩形边.(感谢E先生)

language-agnostic algorithm math geometry

54
推荐指数
5
解决办法
1万
查看次数

如何围绕某个点旋转顶点?

想象一下,你在2d空间中有两个点,你需要将这些点中的一个旋转X度,另一个点作为中心.

float distX = Math.abs( centerX -point2X );
float distY = Math.abs( centerY -point2Y );

float dist = FloatMath.sqrt( distX*distX + distY*distY );
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是找到了两点之间的距离......任何想法我应该从哪里开始?

在此输入图像描述

java math geometry

54
推荐指数
3
解决办法
5万
查看次数

圆 - 圆交叉点

如何计算两个圆的交点.我希望在所有情况下都有两个,一个或没有交叉点.

我有中心点的x和y坐标,以及每个圆的半径.

python中的答案是首选,但任何工作算法都是可以接受的.

algorithm math geometry intersection

53
推荐指数
4
解决办法
7万
查看次数

如何制作圆形UIView

我想制作一个圆形的UIView或UIImageView.或者我可以改变使用滑块大小的圆圈,以及带有选择器视图的颜色.

iphone geometry uiview uiimageview quartz-core

52
推荐指数
6
解决办法
6万
查看次数

找到一个平面上的4个点是否形成一个矩形?

有人可以用C风格的伪代码向我展示如何编写一个函数(表示你喜欢的点),如果4点(函数的参数)形成一个矩形,则返回true,否则返回false?

我想出了一个解决方案,首先尝试找到具有相等x值的2对不同的点,然后对y轴进行此操作.但代码相当长.只是想知道其他人想出了什么.

c algorithm geometry

52
推荐指数
6
解决办法
2万
查看次数

巨大圈子的碰撞检测

检查大量圈子碰撞的最佳方法是什么?
检测两个圆之间的碰撞非常容易,但是如果我们检查每个组合,则它是O(n 2),这绝对不是最佳解决方案.

我们可以假设circle对象具有以下属性:

  • 坐标
  • 半径
  • 速度
  • 方向

速度是恒定的,但方向可以改变.

我想出了两个解决方案,但也许有更好的解决方案.

解决方案1将
整个空间划分为重叠的正方形,并仅检查与同一正方形的圆形的碰撞.正方形需要重叠,因此当圆从一个方格移动到另一个方格时不会出现问题.

解决方案2
在开始时,需要计算每对圆之间的距离.
如果距离很小,那么这些对存储在一些列表中,我们需要检查每次更新中的冲突.
如果距离很大,那么我们存储后更新可能会发生碰撞(可以计算,因为我们知道距离和速度).它需要存储在某种优先级队列中.在先前计算的更新数量之后,需要再次检查距离,然后我们执行相同的过程 - 将其放在列表中或再次放入优先级队列中.

Mark Byers的答案问题

  1. 是游戏吗?
    这是为了模拟,但也可以作为游戏来对待
  2. 您想要每n毫秒重新计算一次新位置,还要检查此时的碰撞情况吗?
    是的,更新之间的时间是不变的.
  3. 您想找到发生第一次/每次碰撞的时间吗?
    不,我想找到每一次碰撞,并在碰撞时做"有所作为".
  4. 准确性有多重要?
    这取决于你的准确度是什么意思.我需要检测所有碰撞.
  5. 如果非常小的快速移动的圆圈偶尔会相互穿过,这是一个大问题吗?
    可以假设速度太小而不会发生.

algorithm geometry collision-detection

52
推荐指数
3
解决办法
8684
查看次数

非交叉线段,同时最小化累积长度

我想找到一个更好的算法来解决以下问题:

2D中有N个起点(紫色)和N个目标点(绿色).我想要一种算法,通过线段(棕色)将起始点连接到目标点,而没有任何这些段相交(红色),同时最小化所有段的累积长度.

我在C++中的第一个努力就是置换所有可能的状态,找到无交叉状态,以及总段长度最小为 O(n!)的状态.但我认为必须有更好的方法.

在此输入图像描述

任何的想法?或者搜索好的关键词?

c++ algorithm performance geometry

52
推荐指数
1
解决办法
2155
查看次数

使用分布式粒子拟合图像中自由区域中的最大圆

我正在处理图像,以检测并适合包含分布式粒子的图像的任何自由区域中的最大圆圈:1

(能够检测粒子的位置).

一个方向是定义一个圆圈触摸任何三点组合,检查圆圈是否为空,然后在所有空圆圈中找到最大的圆圈.然而,它导致大量组合,即C(n,3),n图像中的粒子总数在哪里.

如果有人能提供我可以探索的任何提示或替代方法,我将不胜感激.

math matlab geometry image-processing particles

50
推荐指数
4
解决办法
3159
查看次数