这更像是一个算法问题.我有一个页面,使用javaScript通过绘制从源到目标的箭头连接显示项目和项目与其他项目的关系(想想jsPlumb).每个项目可以有0个或更多连接.我面临的挑战是以最佳方式战略性地将div /圈放置在容器中.
可视示例:下图是未经优化的显示版本,已将圆圈随机放置在容器内.
请注意,在上图中,连接(箭头)重叠的数量不必要地高.下图是一个优化的解决方案,在这个小例子中,圆圈位于更好的位置,导致连接没有重叠:
放置物品的容器尺寸为1020x800.存在大量圆圈的地方总会有重叠,因此我们的想法是尽量减少连接重叠的数量.我希望能够做到这一点的例子,因为我发现阅读算法文章有点令人生畏:(.
我正在开发一个Android应用程序来根据传感器的数据计算位置
加速度计 - >计算线性加速度
磁力计+加速度计 - >运动方向
初始位置将取自GPS(纬度+经度).
现在根据传感器的读数,我需要计算智能手机的新位置:
我的算法遵循 - (但不计算准确位置):请帮助我改进它.
注意: 我的算法代码在C#中(我将传感器数据发送到服务器 - 数据存储在数据库中.我正在计算服务器上的位置)
所有DateTime对象都是使用TimeStamps计算的 - 从01-01-1970
var prevLocation = ServerHandler.getLatestPosition(IMEI);
var newLocation = new ReceivedDataDTO()
{
LocationDataDto = new LocationDataDTO(),
UsersDto = new UsersDTO(),
DeviceDto = new DeviceDTO(),
SensorDataDto = new SensorDataDTO()
};
//First Reading
if (prevLocation.Latitude == null)
{
//Save GPS Readings
newLocation.LocationDataDto.DeviceId = ServerHandler.GetDeviceIdByIMEI(IMEI);
newLocation.LocationDataDto.Latitude = Latitude;
newLocation.LocationDataDto.Longitude = Longitude;
newLocation.LocationDataDto.Acceleration = float.Parse(currentAcceleration);
newLocation.LocationDataDto.Direction = float.Parse(currentDirection);
newLocation.LocationDataDto.Speed = (float) 0.0;
newLocation.LocationDataDto.ReadingDateTime = date;
newLocation.DeviceDto.IMEI = …
Run Code Online (Sandbox Code Playgroud) 我有SVG的无线路径,我需要在给定的矩形内尽可能有效地打包(尽可能减少空间浪费).经过一些研究,我发现了bin打包算法,它似乎是处理盒子而不是弯曲的随机形状(我的SVG形状非常复杂,包括beziers等).
AFAIK,没有用于实际打包抽象形状的确定性算法.
我希望在这里被证明是错误的,这将是理想的(有一个数学确定性方法来包装它们).如果我是对的而且没有,那么这个问题的最佳方法是什么
主题名称是形状嵌套,嵌套问题或嵌套过程.
在形状嵌套中,没有单一/统一的算法或数学方法来嵌套形状并且可以获得最少的空间浪费.
第一种方法是打包算法(为每个形状创建一个虚构的边界框,并使用矩形2D算法来打包边界框).这种方法速度快,但在空间浪费方面效率最低.
第二种方法是某种增量旋转.该算法以增量步长旋转形状并检查它是否适合空间.在空间浪费方面,这比包装方法更好,但是它的速度非常慢,
有哪些其他课堂示例可以解决这个问题?
[序幕]
这个Q&A旨在更清楚地解释我在这里首次发表的近似搜索类的内部工作
我已经被要求提供关于这几次的更多详细信息(由于各种原因)所以我决定写关于这个的Q&A风格主题,我将来可以很容易地参考这个主题并且不需要一遍又一遍地解释它.
[题]
如何逼近Real域(double
)中的值/参数以实现多项式,参数函数或求解(困难)方程(如超越)的拟合?
限制
double
精确)我可以使用哪种算法来搜索n个光盘(x j,y j,r j)覆盖XY平面有限区域的最佳(最小面积)?
我发现有许多关于固定半径光盘的研究,但关于可变半径却没有任何研究。
n
固定,但光盘可以自由放置(它们不在指定的位置,并且它们的中心不需要在区域内)。该区域通常是非连接和非简单连接的(可以由多个部分组成并且可以具有孔)。在我的特定情况下,是由多个封闭的多边形定义的(使用奇偶填充规则)。
回顾一下:
输入:
XY平面的有限区域(例如,描述为具有奇偶填充规则的闭合多边形的集合)
n
> 0 的整数
输出:
n
用中心x[i], y[i]
和半径描述的光盘列表,r[i]
以便该区域的每个点都包含在至少一张光盘中最小化:
在此示例中,输入为“ A”形。手动放置十个点,并计算出覆盖该区域与Voronoi单元的交点的最小圆。
我目前正在研究仅基于寻找中心x[i], y[i]
并r[i]
使用此算法计算半径的方法(搜索空间减少?n并始终产生可接受的解决方案)。