给定一个x,y点数组,如何按顺时针顺序(围绕它们的整体平均中心点)对该数组的点进行排序?我的目标是将点传递给线创建函数,以最终看起来相当"坚实"的东西,尽可能凸起,没有相交的线.
为了它的价值,我正在使用Lua,但任何伪代码都会受到赞赏.非常感谢您的帮助!
更新:作为参考,这是基于Ciamej优秀答案的Lua代码(忽略我的"app"前缀):
function appSortPointsClockwise(points)
local centerPoint = appGetCenterPointOfPoints(points)
app.pointsCenterPoint = centerPoint
table.sort(points, appGetIsLess)
return points
end
function appGetIsLess(a, b)
local center = app.pointsCenterPoint
if a.x >= 0 and b.x < 0 then return true
elseif a.x == 0 and b.x == 0 then return a.y > b.y
end
local det = (a.x - center.x) * (b.y - center.y) - (b.x - center.x) * (a.y - center.y)
if det < 0 then return true
elseif det > 0 then …Run Code Online (Sandbox Code Playgroud) 我是Play的新手!Framework 2.1(java版)并没有使用scala的经验.我不明白Build.scala 中的内容%和%%含义.我用Google搜索了他们但却找不到他们的意思.
在我的Build.scala文件中,我有:
"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"
Run Code Online (Sandbox Code Playgroud)
为什么第一行使用单个%符号而第二行使用2%符号%%?它们适用于什么?
我想更改在AndroidStudio中创建文件时出现的自动作者.
/**
* Created by a556520 on 16/01/14.
*/
public class POI {
Run Code Online (Sandbox Code Playgroud)
作者采用'a556520',但我希望这看起来是我的名字,而不是员工的数量.那可能吗?我没有在设置中找到.
我不知道如何找到数组列表的长度.我想你可能需要使用,blank.length();但我不确定.
我做了一个数组列表
ArrayList<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
但是如何编写代码来打印myList的大小?
我公司的开发环境基于VirtualBox上运行的虚拟机.我们希望更进一步,并使用Vagrant的功能在文本文件中获得机器的描述,然后能够基于该文本文件"提升"该机器.结合木偶,这将解决每个人在VM中安装不同软件版本的问题.
然而,Vagrant似乎非常专注于在主机上开发,让机器在后台运行.我们需要在机器中拥有我们的开发环境,因此我们需要一个完整的GUI,因此当输入"vagrant up"时,应该出现具有完整桌面环境(XFCE,KDE ...)的机器.
到目前为止,我已经设法从Xubuntu发行版中创建了一个"基础"框.但是当我键入"vagrant up"时,虽然桌面出现了,并且我能够正确登录,但Vagrant会在"等待机器启动时消息"中冻结.这可能需要几分钟......".过了一会儿,Vagrant因超时而崩溃.因此,不会创建共享文件夹,也不会执行包配置程序-puppet-.
如何使用vagrant创建具有完整GUI的虚拟机?
你如何让JS认为字符串是JSON?
我有一个函数只有在传递JSON对象时才有效.如果我将一个字符串传递给它,格式与JSON相同,则它不起作用.所以我想让该函数认为传递给它的字符串是一个JSON.该字符串确实是JSON格式.
我也试过以下.我通过Ajax输入了字符串,"handle as"参数为"JSON",然后当我将结果传递给函数时,它就可以了.
所以我推断出问题不在于字符串.如何将此字符串转换为JSON?如果我通过ajax请求得到相同的字符串,然后将其传递给函数工作,而直接传递它不起作用.
字符串如下:
{
"data": [
{
"id": "id1",
"fields": [
{
"id": "name1",
"label": "joker",
"unit": "year"
},
{"id": "name2", "label": "Quantity"},
],
"rows": [ data here....
and closing braces..
Run Code Online (Sandbox Code Playgroud) 我读过Vector不是seqs,但列表是.我不确定使用一个在另一个上的理由是什么.似乎矢量被最多使用,但是有没有理由呢?
在下面的代码片段中,Color枚举是在Car类中声明的,以便限制枚举的范围并尽量不"污染"全局命名空间.
class Car
{
public:
enum Color
{
RED,
BLUE,
WHITE
};
void SetColor( Car::Color color )
{
_color = color;
}
Car::Color GetColor() const
{
return _color;
}
private:
Car::Color _color;
};
Run Code Online (Sandbox Code Playgroud)
(1)这是限制Color枚举范围的好方法吗?或者,我应该在Car类之外声明它,但可能在它自己的命名空间或结构中声明它?我今天刚刚看到这篇文章,主张后者并讨论关于枚举的一些好点:http: //gamesfromwithin.com/stupid-c-tricks-2-better-enums.
(2)在这个例子中,当在类中工作时,最好是将枚举编码为Car::Color,还是只需要Color?(我假设前者更好,以防万一Color在全局命名空间中声明了另一个枚举.这样,至少,我们明确指出我们所指的枚举.)
如果我使用between子句运行查询,它似乎排除了结束值.
例如:
select * from person where dob between '2011-01-01' and '2011-01-31'
Run Code Online (Sandbox Code Playgroud)
这dob将从'2011-01-01'到'2011-01-30' 获得所有结果; 跳过记录在哪里dob'2011-01-31'.任何人都可以解释为什么这个查询的行为方式,以及我如何修改它以包含记录dob'2011-01-31'?(不添加1到结束日期,因为它已被用户选中.)
java ×3
ajax ×1
algorithm ×1
android ×1
arraylist ×1
between ×1
c++ ×1
class ×1
clojure ×1
desktop ×1
enums ×1
geometry ×1
get ×1
http ×1
javadoc ×1
javascript ×1
json ×1
list ×1
lua ×1
math ×1
mysql ×1
namespaces ×1
sbt ×1
scala ×1
scope ×1
sequences ×1
sql ×1
vagrant ×1
vector ×1
virtualbox ×1