我正在实施Fortune的扫描线算法来计算Voronoi图.我的主要参考文献是de Berg等人的"计算几何:算法和应用",虽然他们对这个主题的报道非常清楚,但他们传递了一些我自己一直无法解决的小而重要的细节.我在网上寻求帮助,但其他网站要么比教科书提供更高的概述,要么提供本书提供的完全相同的伪代码.
我需要一种方法来确定由海滩线上的三个弧确定的一对断点是否收敛或发散,以便检测即将到来的圆周事件.似乎要做出决定,我需要了解Voronoi单元边缘的形状,断点随着Fortune算法的进展而逐渐显现出来.例如,如果我能找到断点跟踪的边的斜率,我可以计算断点形成的两条线的位置和它们各自的斜率相交,并根据该结果确定它们是否收敛.但是,我不知道如何获得斜坡上的信息,只知道断点的当前位置.
我必须处理的唯一信息是三个站点的x,y位置和扫描线的当前y坐标(我使用的是水平扫描线).
实际上,我确实有一个确定收敛的想法.给定两个站点,他们定义的海滩线的两个部分之间的断点仅由扫描线的当前位置控制.我考虑记录两个断点的位置,暂时推进扫描线少量,并记录他们的新位置.因为正常Voronoi图中的边不会弯曲,如果新断点之间的距离小于旧对之间的距离,则断点会聚; 否则,他们分歧.但这似乎既危险(我不知道它是否总是有效)和丑陋.当然必须有更好的方法.
任何想法都会受到赞赏,并且伪代码(如果可能的话,使用类似C#的语法)尤其如此.另外我知道有一些计算几何库可以用来获取Voronoi图,但这是一个个人学习练习,所以我想自己实现算法的所有部分.
这是我目前的整个node.js服务器代码:
require('http').createServer(function (req, resp) {
var html = [
'<!DOCTYPE html>',
'<html>',
'<head>',
'<meta charset="utf-8" />',
'<title>Sample Response</title>',
'</head>',
'<body>',
'<p>Hello world</p>',
'</body>',
'</html>'
].join('');
resp.writeHead(200, {
'Content-Length': Buffer.byteLength(html, 'utf8'),
'Content-Type': 'application/xhtml+xml;'
});
resp.write(html, 'utf8');
resp.end();
}).listen(80);
Run Code Online (Sandbox Code Playgroud)
根据我对node.js文档的理解,resp.write()的第二个'utf8'参数应该使节点将html字符串编码为UTF-8,而不是JavaScript字符串本身表示为的UTF-16.但是,当我将浏览器指向localhost:80时,查看源代码并将其保存到本地html文件,Notepad ++告诉我该文件是以UTF-16编码的.此外,当我通过W3C html验证器工具运行时,它还抱怨"内部编码声明utf-8不同意文档的实际编码(utf-16)".
如何强制node.js将我的HTTP响应体编码为UTF 8?
以下C#代码无法编译.
public class BaseType
{
public BaseType(int bar)
{
// Do stuff with bar...
}
}
public class DerivedType : BaseType
{
private int foo;
public DerivedType() : base(foo = 0) {}
}
Run Code Online (Sandbox Code Playgroud)
在调用DerivedType的基本构造函数时发生错误,并在静态上下文中显示消息"无法访问非静态字段'foo'." 这个错误消息告诉我什么?'foo'不是静态的,也不是类,而且这些不是静态构造函数.
我正在考虑使用 <canvas> API 制作一个简单的网页游戏。我查看了 JavaScript 库,用于直接渲染到画布上的 GUI 元素,发现一些看起来不错,例如Zebra,但我更愿意坚持使用在画布上渲染的标准 DOM 控件。但是,我遇到了鼠标输入被 <div> 捕获的问题,我用来包含我想要使用的按钮、文本框等。
考虑下图,或转到此小提琴以查看我目前的代码。

(来源:ekardnt.com)
红色背景是一个canvas元素,蓝色背景是一个有四个按钮的div。画布和 div 都具有“位置:绝对”CSS 属性。我向画布和 div 的 onclick 事件添加了简单的 alert() 调用,以显示哪些元素正在捕获输入。
我想要的是在点击没有落在按钮上时调用画布的 onclick 。也就是说,如果我点击按钮容器 div 暴露的蓝色背景,我希望点击事件“落入”画布。然而,目前,当我点击一个按钮和点击蓝色区域时,div 的 onclick 都会被调用——这是一个明智的默认行为,但对我来说不方便。
有没有办法获得我想要的行为?我尝试添加pointer-events: none到 div 的样式,但是按钮根本不响应输入。
algorithm ×1
breakpoints ×1
c# ×1
canvas ×1
css ×1
html ×1
javascript ×1
node.js ×1
utf-8 ×1
voronoi ×1