作为一个更大的程序(与渲染体积图形相关)的一部分,我有一个小而棘手的子问题,其中任意(但有限)三角形2D网格需要以特定方式进行标记.我刚刚写了一个解决方案(见下文),它对我当时的测试网格来说已经足够好了,尽管我意识到这种方法对于人们可以想到的每个可能的网格都可能不会很好.现在我终于遇到了一个网格,目前的解决方案根本不能很好地执行 - 看起来我应该想出一种完全不同的方法.不幸的是,我似乎无法重置我的思路,这就是为什么我以为我会问这里.
请看下面的图片.(颜色不是问题的一部分;我只是添加它们来改进(?)可视化.而且变化的边缘宽度是一个完全不相关的工件.)
对于每个三角形(例如,橙色ABC和绿色ABD),三个边缘中的每一个都需要被给予两个标签中的一个,例如"0"或"1".只有两个要求:
网格是真正的2D网格,它是有限的:即,它不包裹,并且它具有明确定义的外边界.显然,在边界上很容易满足要求 - 但内部变得更加困难.
直观地说,看起来至少应该存在一个解决方案,即使我无法证明它.(通常有几个 - 其中任何一个都足够了.)
我目前的解决方案是一个非常强力的解决方案(此处仅为完整性而提供 - 可以跳过此部分):
通常这种方法发现只是一对夫妇的迭代内的解决方案,但最近我遇到了该算法趋于结束后,才一两个网上千重试......这显然表明,有可能的网格,它永远不会结束.
现在,我希望有一个确定性的算法,保证总能找到解决方案.计算复杂性不是一个大问题,因为网格不是很大,并且标签基本上只需要在加载新网格时完成,这不会一直发生 - 所以一个算法(例如)指数复杂性应该没问题,只要它有效.(但当然:效率越高越好.)
感谢您阅读此内容.现在,任何帮助将不胜感激!
不幸的是,我无法让Dialecticus建议的方法起作用.也许我没弄错......无论如何,考虑以下网格,起点由绿点表示:
让我们放大一点......
现在,让我们开始算法.在第一步之后,标签看起来像这样(红色="星号路径",蓝色="环形路径"):
到现在为止还挺好.第二步之后:
第三个:
......第四名:
但是现在我们遇到了问题!让我们再做一轮 - 但请注意以洋红色绘制的三角形:
根据我目前的实现,洋红三角的所有边缘都在环形路径上,所以它们应该是蓝色的 - 这实际上是一个反例.现在也许我以某种方式弄错了......但无论如何,最接近起始节点的两条边显然不能是红色; 如果第三个标记为红色,那么似乎解决方案不再符合这个想法.
顺便说一下,这是使用的数据.每行代表一条边,列的解释如下:
LISP的版本/方言/实现是什么意思?
(我确实理解这本书是用Common LISP编写的(如导言中所述),并且早于1994年CL标准).
将问题分成两部分,使其更加清晰.
我想知道实现自动登录我的网站的最佳方式.我的意思是自动是这样的:
我已经签了谷歌.我现在转到我的网站及其登录页面.我没有点击链接以使用Google登录,而是希望网络应用检测到我已登录Google并绕过整个登录页面.
1)我会使用DotNetOpenAuth.OpenId.RelyingParty.OpenIdAjaxRelyingParty.HttpApplicationStore来获取关联吗?
2)或者我需要查看cookie.
我有一个奇怪的问题.我想在Doctrine 2中关闭代理的自动生成.我发现这行代码应该做(并且做)诀窍:
$config->setProxyDir(APPPATHSYSTEM."/proxies");
$config->setProxyNamespace('Proxies');
// Auto generate proxies for development
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)
在我的测试环境中,代理位于应用程序/代理.即:
application/proxies/BaseUserProxy.php
Run Code Online (Sandbox Code Playgroud)
当我在实时环境中时,我的代码突然在application/proxies/Proxies上搜索代理,而不是实际位置.
我确实理解它与命名空间有关,但我不明白为什么它在使用setAutoGenerateProxy方法时表现不同.
有任何想法吗?
编辑
我确实使用以下方法生成新代理:
orm:generate-proxies
Run Code Online (Sandbox Code Playgroud)
选项.
这给了我这个输出:
php doctrine.php orm:generate-proxies
Processing entity "Base\Element"
Processing entity "Base\Page"
...
Processing entity "Base\Site"
Proxy classes generated to "/var/www/application/proxies"
Run Code Online (Sandbox Code Playgroud)
查看最后一行,代理在/ var/www/application/proxies中生成.目录列表如下所示:
BaseElementProxy.php
BasePageProxy.php
...
BaseSiteProxy.php
Run Code Online (Sandbox Code Playgroud)
所以没有额外的Proxies目录.但是,当我刷新我认为有的网页时,它会给我以下错误:
Warning: require(/var/www/application//proxies/Proxies/BaseUserProxy.php)
[function.require]: failed to open stream:
No such file or directory in /var/www/library/Doctrine/Common/ClassLoader.php on line 148
Run Code Online (Sandbox Code Playgroud)
为什么要添加额外的Proxies目录?如果我确实在每个请求上生成代理,则它不会在额外的Proxies目录中查找.任何人?
@Bryan M.:这不是解决方案,而是解决方法.此外,它不起作用.在生成代理时,如果应用您的建议,它们将在APPPATHSYSTEM中生成,我的webapp将尝试从APPPATHSYSTEM加载它们."Proxies".问题是,如果我使用,系统会在不同位置查找代理:
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)
如果开发是真的,它将查看APPPATHSYSTEM.如果DEVELOPMENT设置为false,它将查看APPPATHSYSTEM."Proxies".只是切换开发常量会破坏我的应用程序,理论上应该是不可能的.
想一想:
StreamReader reader = null;
try
{
reader = new StreamReader(_fileName);
}
catch
{
//show error that file not found
reader.Dispose();
return false;
}
try
{
//code to read file
}
catch
{
//show error badly formed file
}
finally
{
reader.Dispose();
}
//return
Run Code Online (Sandbox Code Playgroud)
当无法打开文件时,上面的代码不起作用,因为它调用Dispose for null导致异常.
我不想使用因为我想分开打开文件和阅读它的问题.这可以通过百万种不同的渔获量实现,但我不想这样做.另外如果使用与try-finally相同,那么"隐藏Dispose"会抛出不需要的异常吗?当我需要的只是捕获异常打开它并读取异常时,这将是最好的方法吗?
谢谢和BR - 马蒂
我有一个巨大的报告,当我浏览报表查看器时工作正常.我创建了一个订阅,所以我可以在后台运行它.如果订阅是唯一正在运行的订阅,则订阅有效.如果我运行2个订阅开始在同一时间,并指向相同的报告,该线程被中止了一个订阅,另一个工作.
我已尝试使用配置键的所有建议rsreportserver.config
,但没有运气.
如果customsort功能与变量传递的,现在看来,这将访问冲突.
public
...
col: integer;
...
Procedure listviewcol;
begin
col:=5
...
end;
procedure TForm1.sortcol(listview: tlistview);
function CustomSortProc(Item1,Item2: TListItem;
OptionalParam: integer): integer;stdcall;
begin
Result := AnsiCompareText(Item2.subitems.Strings[col], Item1.subitems.Strings[col]);
end;
begin
ListView.CustomSort(@CustomSortProc,0);
end;
Run Code Online (Sandbox Code Playgroud)
这会提示错误.//访问冲突
但是如果我们将AnsicompareText中的col更改为5,那么它运行良好.
procedure TForm1.sortcol(listview: tlistview);
function CustomSortProc(Item1,Item2: TListItem;
OptionalParam: integer): integer;stdcall;
begin
Result := AnsiCompareText(Item2.subitems.Strings[5], Item1.subitems.Strings[5]);// it works.
end;
begin
ListView.CustomSort(@CustomSortProc,0);
end;
Run Code Online (Sandbox Code Playgroud)
如何解决它.请帮忙.非常感谢.
有一个列表标准的Python例外,我们应该看出来,但我不认为这些都是我们应该提高自己,因为他们很少适用的人.
我很好奇是否在标准python库中存在一个列表,例外类似于.NET的ApplicationException,ArgumentNullException,ArgumentOutOfRangeException,InvalidOperationException - 我们可以提出的异常?
或者是否有不同的,更加pythonic的方式来处理常见错误情况,而不是提出标准异常?
编辑:我不是在询问如何处理异常,而是我可以在需要的地方提出什么类型.
我有两个字节,8位八位字节,应该读作:[3位] [4位] [3位].
例:
unsigned char octet1 = 0b11111111; // binary values
unsigned char octet2 = 0b00000011;
Run Code Online (Sandbox Code Playgroud)
整数:[7] [15] [7].
任何人都可以给我一个提示从哪里开始?
我需要一个可以根据结构自动排序的数据结构.
struct{
int key;
int comparisonValue(size of the vector);
}
Run Code Online (Sandbox Code Playgroud)
我需要以下面的形式:
datastructure<struct, vector<int>>
Run Code Online (Sandbox Code Playgroud)
在数据结构基于comparisonValue并基于比较值的最小值自动排序的情况下,我想获取向量并向其中添加一些数据.
我可以使用什么数据结构?我可以使用地图吗?是否有地图自定义排序器?
如果我需要修改密钥,在这种情况下是compareValue并仍然保持顺序排序,我该怎么办?
谢谢
algorithm ×1
c ×1
c#-2.0 ×1
c++ ×1
callback ×1
common-lisp ×1
delphi ×1
dispose ×1
doctrine-orm ×1
exception ×1
file-io ×1
idisposable ×1
labeling ×1
lisp ×1
mesh ×1
orm ×1
php ×1
python ×1
stl ×1
subscription ×1
triangular ×1
using ×1