小编Pax*_*x0r的帖子

没有孔的多边形联合

我正在寻找一些相当容易的(我知道多边形联合不是一个简单的操作,但也许有人可以用一个相对简单的方法指向我的方法)合并两个相交的多边形.多边形可以是没有孔的凹面,输出多边形也不应该有孔.多边形以逆时针方式表示.我的意思是在图片上显示.正如你所看到的那样,即使在多边形的组合中有一个洞,我也不需要它在输出中.输入多边形肯定没有洞.我认为没有漏洞应该更容易,但我仍然没有想法. 多边形 - 输入蓝色和红色,输出绿色

algorithm math geometry polygon computational-geometry

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

使用 Django ORM 指定带有 UNION 的 SELECT 中的列顺序

如何在 Django ORM 的 SELECT 查询中指定列的顺序?

我试图联合两个表中的元素,但显然联合中的元素与 SELECT 中的列顺序匹配,而不是列的名称(即使列的名称相同)。

考虑以下模型:

class Person(models.Model):
    first_name = models.CharField(max_length=256)
    last_name = models.CharField(max_length=256)
    age = models.IntegerField()


class Car(models.Model):
    number = models.IntegerField()
    brand = models.CharField(max_length=256)
    name = models.CharField(max_length=256)
Run Code Online (Sandbox Code Playgroud)

和下面的一段代码:

Person.objects.create(first_name="John", last_name="Smith", age=25)
Car.objects.create(number=42, name="Cybertruck", brand="Tesla")

q1 = Person.objects.all().annotate(name=F('first_name'), group=F('last_name'), number=F('age')).values(
            'name', 'group', 'number')
q2 = Car.objects.all().annotate(group=F('brand')).values('name', 'group', 'number')

data = q1.union(q2)
print(data.query)
assert list(data) == [
    {'name': 'John', 'group': 'Smith', 'number': 25},
    {'name': 'Cybertruck', 'group': 'Tesla', 'number': 42},
])

Run Code Online (Sandbox Code Playgroud)

如您所见,我在.values().

可以预期的是, union 中的列将按照传递给值的顺序(或按列名)进行匹配,但这就是发生的情况:

SELECT …
Run Code Online (Sandbox Code Playgroud)

python django postgresql django-orm

11
推荐指数
2
解决办法
1191
查看次数

在XSLT中按属性值对XML节点进行分组

我对xslt转换很新,我需要一种转换方面的帮助.我需要通过其中一个属性对某些类型的所有节点进行分组,并列出每种属性的父节点.它是对文档中某些内容的使用进行总结.我将介绍简化的例子.
输入:

<root>
<node name="node1">
    <somechild child-id="1">
</node>
<node name="node2">
    <somechild child-id="2">
</node>
<node name="node3">
    <somechild child-id="1">
</node>
<node name="node4">
    <somechild child-id="2">
</node>
<node name="node5">
    <somechild child-id="3">
</node>
</root>
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<root>
<somechild child-id="1">
    <is-child-of>
        <node name="node1" />
        <node name="node3" />
    </is-child-of>
</somechild>
<somechild child-id="2">
    <is-child-of>
        <node name="node2" />
        <node name="node4" />
    </is-child-of>
</somechild>
<somechild child-id="3">
    <is-child-of>
        <node name="node5" />
    </is-child-of>
</somechild>
</root>
Run Code Online (Sandbox Code Playgroud)

想法是,如果在许多节点中它们是相同的元素,则它们具有相同的子ID.我需要找到所有人都使用的.我发现这个问题XSLT转换为xml,按键分类是类似的但是有一个声明所有作者在开始我没有这样的,总是只是一个孩子的.

xml xslt xpath

7
推荐指数
1
解决办法
3484
查看次数

WPF自定义控件具有不同的样式或模板?

我有一个WPF Custom Control代表我一个计划的给定点(我正在为我的学习做一个指导申请)我希望它对于这个地图节点所代表的对象的不同类别(即厕所,电梯)看起来不同或正常的房间).
任何人都可以告诉我如何做到这一点?

我尝试创建一个转换器,但它并不顺利.另外我的问题是有时可能是像Ellipse这样的WPF元素,有时它应该是一个图像.

是否可以使用多个模板创建自定义控件,并根据某些类别属性选择模板?

c# wpf custom-controls wpf-controls

6
推荐指数
1
解决办法
591
查看次数

查找多个多边形的共同轮廓

我试图找到一个算法来绘制多个多边形之间的共同轮廓.我的意思是在这张图片上:

两个多边形找到轮廓

我们有两个矩形(在我的例子中,它们不是矩形,但是它们的大部分角度为直角的多边形)和Im在图像的第二部分上寻找像红色路径的共同轮廓.我认为最大的问题是找到新的点,我在图像的第二部分标记为黄色.多边形永远不会交叉或接触自己.我以逆时针顺序存储多边形作为点.

我正在寻找一些我应该谷歌的线索,来源甚至是关键词,这可能会让我的任务变得更容易......

编辑:它类似于凸包,但看着不在顶点的边缘,黄色点可能在边缘的延续,我看着它.

EDIT2:好的,我需要在多边形周围绘制一个给定大小的边框,但是这样的方式是,如果两个多边形比边框大小更近,它们将具有公共边框,这是两个边框的总和,没有"内部"部分它和这两个多边形将被视为一个形状.所以我试图找到这个红色多边形,用于在它周围绘制这个边框.

algorithm drawing polygon outline

6
推荐指数
1
解决办法
2197
查看次数

识别手写圆圈,钻石和矩形

我正在寻找关于识别三种手写形状的一些建议 - 圆形,菱形和矩形.我尝试了不同的aproaches,但他们失败了所以也许你可以指出我在另一个更好的方向.

我尝试了什么:

1)基于手写形状和理想形状点之间的点积的简单算法.它在识别矩形方面并不是那么糟糕,但在圆形和钻石上失败了.问题是,即使对于理想的形状,圆形和菱形的点积也非常相似.

2)相同的方法,但使用动态时间扭曲作为相似性的度量.类似的问题.

3)神经网络.我尝试了一些方法 - 给神经网络(Feedforward和Kohonen)提供点数据或给出光栅化图像.对于Kohonen来说,它始终将所有数据(用于训练的样本)分类到同一类别.前馈与点较好(但在同级别的形式给出了1和2),并与栅格图像这是非常慢(我需要至少大小^ 2个输入神经元和小型光栅圆的没有什么区别,甚至对我来说;))也没有成功.我想是因为所有这些形状都是封闭的数字?我不是ANN的大专家(有一个学期的课程)所以也许我使用它们错了?

4)将形状保存为Freeman Chain Code并使用一些算法来计算相似度.我认为在FCC中,形状将彼此不同.这里没有成功(但我没有深入探索这条道路).

我正在使用这个为Android构建应用程序,但我认为这里的语言无关紧要.

algorithm android neural-network handwriting-recognition

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

C 在所有接口上侦听多播,响应与接收到的相同

我试图在系统中的所有接口上收听多播,但只在我收到多播数据包的这个接口上进行响应。

我所做的是为每个接口创建一个套接字,问题就在这里开始了。

当我将接口绑定到 INADDR_ANY它时,它将接收所有接口的数据包并在默认接口上发送。如果我将端口绑定到特定接口,它将不会接收多播数据包(但它将能够在正确的接口上发送它)。

我试过设置选项,如IP_ADD_MEMBERSHIPIP_MULTICAST_IF但没有成功。

我认为其他选项应该是创建一个套接字来接收所有接口的所有 ifs 和 senders 套接字,但是在这种方法中,我不知道输入了哪个 ifs 数据包......

代码示例(简化,没有错误处理和东西):

创建套接字:

//here i am looping over all interfaces from getifaddrs
struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;

sockets[i] = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
setsockopt(sockets[i], SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval);

mreq.imr_multiaddr.s_addr=inet_addr(MDNS_ADDRESS);
mreq.imr_interface.s_addr=pAddr->sin_addr.s_addr;

setsockopt(sockets[i], IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
setsockopt(sockets[i], IPPROTO_IP, IP_MULTICAST_IF, &pAddr, sizeof(struct in_addr));

memset(&my_addr, 0, sizeof(struct sockaddr_in));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = INADDR_ANY; //or pAddr->sin_addr.s_addr;
my_addr.sin_port = htons(port);

bind(sockets[i], (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) …
Run Code Online (Sandbox Code Playgroud)

c sockets multicast

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

许多(超过两个)没有孔的多边形的联合

我创建没有孔的多边形联合.输入多边形没有孔,也应输出一个.我已经有了工作算法来找到两个多边形.但是如果超过两个则存在问题.因为联合不应该是不相交的多边形,当我尝试逐个计算它们的总和时我在这种情况下遇到问题: 在此输入图像描述

然后多边形1遇到多边形2,联合是不相交的(因此我的算法不计算总和).在第二个循环ofc中它与第3和第4个多边形结合,但是输出与第2个多边形不同.那么有人知道这种快速而准确的算法吗?可能一个好主意是首先通过交叉点对多边形进行排序,但我不能想到任何快速算法,也不完全不确定它们应该如何排序.

sorting algorithm geometry polygons

5
推荐指数
0
解决办法
7446
查看次数

Android上的OpenCV转换为灰度无法正常工作

我正在尝试将一些OpenCV Mat转换为灰度以用于Contours检测算法.由于某种原因,转换后的图像全黑.我的代码(b是Android Bitmap):

Mat tmp = new Mat (b.getWidth(), b.getHeight(), CvType.CV_8UC1);
Utils.bitmapToMat(b, tmp);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_BGR2GRAY);
//there could be some processing
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_GRAY2BGRA, 4);
Utils.matToBitmap(tmp, b);
Run Code Online (Sandbox Code Playgroud)

现在我正在绘制这个位图,它全是黑色的.当我将轮廓检测应用于此位图(代替注释)时没有匹配,所以我认为问题在于转换.删除转换后(只需调用bitmapToMat和matToBitmap),然后位图不是全黑的,所以转换为Mat也有效.位图在ARGB_8888中并且没有错误,只是输出位图全黑.

编辑:只是为了确保我尝试使用ocv imwrite保存位图 - 它仍然全黑,所以问题是在cvtColor 100%...

java android opencv

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

SVG元素的边界框在浏览器之间不一致

我注意到浏览器之间的形状边界框之间存在不一致.我做了包含这个的SVG:

<rect x="100" y="100" width="100" height="100" id="rect" fill="gray" stroke="black" stroke-width="2px" />
<path d="M100 100 L100 200 L200 200 L200 100 z" id="path" fill="red" stroke="white" stroke-width="2px"/>
Run Code Online (Sandbox Code Playgroud)

当我试图在Chrome和IE上获得它们的边界框(element.getClientBoundingBox)时,尺寸为w = 100,h = 100且它们的位置为x = 100,两个形状的y = 100.但是在第一个形状的FireFox上,我得到w = 102,h = 102(大小+边框),x = 99,y = 99.在路径上,值更奇怪 - w = 116,h = 116,x = 92,y = 92.

这是一个Firefox错误 - 应该发布到Bugzilla吗?SVG规范是否说明了什么?(我找不到任何与此相关的信息).有没有人知道解决这个问题的方法?特别是路径元素对我来说是不可预测的.

firefox svg cross-browser bounding-box

2
推荐指数
1
解决办法
1829
查看次数

Django 从所有查询中排除字段

我正在 Heroku 上运行 Django,具有零停机功能。这意味着在部署期间,同一数据库上运行两个版本的代码(旧版和新版)。这就是为什么我们需要避免任何向后不兼容的迁移。

是否有可能从给定模型上的 Django 查询中排除字段?

假设我们有一个模型(版本 1):

class Person(models.Model):
    name = models.CharField()
    address = models.TextField()
Run Code Online (Sandbox Code Playgroud)

在未来的某个时间,我们希望将地址移动到单独的表中。我们知道我们不应该删除旧代码要工作的字段,因此 Person 模型可能看起来像(版本 2):

class Person(models.Model):
    name = models.CharField()
    address = models.ForeignKey(Address)
    _address = models.TextField(db_name='address')
Run Code Online (Sandbox Code Playgroud)

这样,如果旧代码查询地址,即使数据库已迁移,它也会从 Person 表中获取地址(这将是旧值,但假设这不是一个大问题)。

现在我如何才能安全地删除_address字段?如果我们部署版本 3 并_address删除字段,则版本 2 的代码仍将尝试_address在 select 上获取,即使它没有在任何地方使用,并且会失败并出现“无此类列”异常。

有没有办法防止这种情况,并在版本 2 的代码中将某些字段标记为“不可获取”?所以版本 2 不会删除字段,但不会再获取它,版本 3 将删除字段。

python django database-migration django-orm django-migrations

2
推荐指数
1
解决办法
7459
查看次数

在lisp中从列表中评估函数

我需要在lisp中编写一个带有两个参数的函数 - 无参数函数列表和整数列表.我需要按照第二个列表的顺序评估第一个列表中的函数,即(有趣的'(#'a#b#'c)'(2 0 1))应该评估c,a,b.我试过这样的功能:

(defun z4(funs kols)
    (funcall (nth (first kols) funs))
    (z4 funs (rest kols))
)
Run Code Online (Sandbox Code Playgroud)

但是在funcall我发现错误

NIL不属于CONS类型.

这是什么意思?通过简单地调用我得到同样的错误

(funcall (first funs))
Run Code Online (Sandbox Code Playgroud)

所以我认为它与从函数列表中获取函数有关.如何从函数列表中评估函数?

lisp functional-programming function list

0
推荐指数
1
解决办法
1187
查看次数