小编eh9*_*eh9的帖子

Dijkstra和Prim的算法有什么区别?

任何人都可以告诉我DijkstraPrim的算法之间的区别吗?我知道每个算法的作用.但他们看起来和我一样.Dijkstra算法存储最小成本边的总和,而Prim算法存储最多一个最小成本边.这不一样吗?

algorithm shortest-path

32
推荐指数
3
解决办法
4万
查看次数

`candle`命令行上的`-arch`参数究竟是什么?

我在WiX 3.7版中设置了32位和64位版本.在充分解释这一问题时,WiX文档存在缺陷.在文档中Package/@Platform,它说"不鼓励使用此属性;而是在candle.exe命令行指定-arch开关",但是没有解释这个参数实际上做了什么(至少没有我能找到的) .编译器"文档"完全值得"文档"这个词的空气引用,因为它基本上是一个存根(例如,与链接器文档不同).对于历史记录,这里完全是编译器文档:

Candle.exe公开了Windows Installer XML编译器.Candle负责根据WiX架构wix.xsd将输入的.wxs文件预处理为有效的格式良好的XML文档.然后,将每个经过后处理的源文件编译为.wixobj文件.

编译过程相对简单.WiX架构适用于简单的递归下降解析器.编译器依次处理每个元素,创建新符号,计算必要的引用并生成.wixobj文件的原始数据.

命令行帮助提供了一点,但还不够.

-arch      set architecture defaults for package, components, etc.
           values: x86, x64, or ia64 (default: x86)
Run Code Online (Sandbox Code Playgroud)

在一个相关的问题,在WiX 3.0中的平台识别,有一个答案,提示可能会发生什么,但这是不够的,我不知道它是否准确.

  • -arch参数是否与设置Package/@Platform属性具有相同的效果,还是更多?
  • 参数是否影响预处理器中可用的任何内容?特别是,它是否设置了PLATFORM预处理器变量?它还有其他什么吗?
  • 什么是架构"默认"?显式Package/@Platform属性是否覆盖命令行?或相反亦然?或者(更好的是)如果存在不一致的平台声明,是否会出错?

其中一些问题的答案似乎应该是显而易见的,事实上我只是写了一些问题.但我想要一个明确的答案,最好(提示)指向candle命令行的更新和准确的文档页面的链接.我确实希望在任何人回答的时候已经解决了这个问题,但是,我会尽快拯救其他人,因为我会花时间来解决这个问题.


另一个相关问题,WIX:是否真的弃用了Package元素的Platform属性?,讨论Package/@Platform属性,但不解决命令行参数.
关于该PLATFORM预处理器变量.现在显然BUILDARCH,尽管你很难从文档中了解它.

warning CNDL1034 : The built-in preprocessor variable '$(sys.PLATFORM)' is 
deprecated. Please correct your authoring to use the …
Run Code Online (Sandbox Code Playgroud)

wix

8
推荐指数
2
解决办法
4959
查看次数

当状态在未激活时更改时,Firefox无法正确更新页面

我们有一个角度应用程序(SPA),它维护客户端用户会话(会话超时,不活动时间等).会话用于强制用户在会话因某种原因到期时重新登录.

会话的到期由专用服务控制,该服务在会话终止,锁定或以其他方式更改状态时在$ rootScope上广播事件.

我们将侦听器添加到那些会将路由更改为相关页面(登录页面,解锁页面等)的会话状态更改事件.我们使用angular-ui-router进行路由.

这很好,但是,特别是在Firefox中,如果在浏览器窗口/选项卡未激活(即最小化,在后台等)时会发生会话状态更改,则页面不会正确刷新.换句话说,您可以看到新页面的控件(例如用户名文本字段和密码字段),但不会看到新页面的背景,而是看到旧页面的背景.

它在Chrome和IE中完美运行,我们只在Firefox上看到这个问题.此外,当浏览器窗口/选项卡处于活动状态时,它也可以在Firefox上完美运行.

有什么想法吗 ?

firefox angularjs angular-ui-router

8
推荐指数
1
解决办法
149
查看次数

使用半边网格实现Catmull-Clark细分时查找双胞胎

注意:描述变得比预期的要长一些.您是否知道使用此网格的此算法的可读实现?请告诉我!


我正在尝试使用Matlab 实现Catmull-Clark细分,因为稍后必须将结果与已经在Matlab中实现的其他一些东西进行比较.首先尝试使用Vertex-Face网格,算法可以工作,但效率不高,因为边缘和面需要相邻信息.因此,我现在使用的是半边网格.另见 Lutz Kettner 设计多面体表面的数据结构(该页面上的PDF链接).

我的问题在于找到Twin HalfEdges,我只是不确定如何做到这一点.下面我将描述我对实现的看法,试图保持简洁.


半边网格(使用Vertices/HalfEdges/Faces的索引):

Vertex (x,y,z,Outgoing_HalfEdge)
HalfEdge (HeadVertex (or TailVertex, which one should I use), Next, Face, Twin).
Face (HalfEdge)
Run Code Online (Sandbox Code Playgroud)

为了保持现在的简单,假设每个面都是四边形.实际网格是Vertices,HalfEdges和Faces的列表.新网格将由NewVertices,NewHalfEdges和NewFaces组成,如下所示(注意:Number _.........的数量):

NumberNewVertices: Number_Faces + Number_HalfEdges/2 + Number_Vertices
NumberNewHalfEdges: 4 * 4 * NumberFaces
NumberNewfaces: 4 * NumberFaces
Run Code Online (Sandbox Code Playgroud)

卡特莫尔 - 克拉克:

Find the FacePoint (centroid) of each Face:
--> Just average the x,y,z values of the vertices, save as a NewVertex. 
Find …
Run Code Online (Sandbox Code Playgroud)

algorithm 3d graphics matlab polygon

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

如何将JTS-Geometry转换为AWT-Shape?

是否可以将com.vividsolutions.jts.geom.Geometry(或其子类)转换为实现的类java.awt.Shape?我可以使用哪种库或方法来实现该目标?

java geometry jts awt shape

4
推荐指数
1
解决办法
2207
查看次数

指针算术和可移植性

我正在写一个应用程序,我不得不做一些指针算术.但是这个应用程序将在不同的架构上运行!我不确定这是否会有问题,但在阅读本文之后,我认为我必须改变它.

这是我原来的代码,我不太喜欢:

class Frame{
  /* ... */
protected:
  const u_char* const m_pLayerHeader; // Where header of this layer starts
  int m_iHeaderLength;                // Length of the header of this layer
  int m_iFrameLength;                 // Header + payloads length
};

/**
 * Get the pointer to the payload of the current layer
 * @return A pointer to the payload of the current layer
 */
const u_char* Frame::getPayload() const
{
  // FIXME : Pointer arithmetic, portability!
  return m_pLayerHeader + m_iHeaderLength;
}
Run Code Online (Sandbox Code Playgroud)

很糟糕不是吗!向指针添加 …

c++ embedded pointers pointer-arithmetic

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

为什么我不能将此正则表达式返回字符串转换为整数或直接转换为整数?(C++)

我已经阅读了一些关于将字符串转换为整数的StackExchange帖子和其他页面,但这不起作用.这是我尝试的最后一件事:

if (infile.is_open())
{
        while (getline (infile,line))
        {

            regex_match(line,matches,exp);

            regex_match((string)matches[1], time0, exp_time);

            buffer << time0[1];
            str = buffer.str();

            str.append("\0");


            cout << atoi(str.c_str()) << '\n';

            last_match = matches[2];
            buffer.str(string());
        }
        infile.close();
}
Run Code Online (Sandbox Code Playgroud)

我想不出任何其他方式.我尝试正常转换为字符串到char*到整数.我尝试将其转换为字符串,然后使用stoi()将其转换为整数.我尝试向它添加一个NULL字符("\ 0"),我也尝试将它附加到缓冲区中.我也尝试了atof()和stof().stoi()和stof()都使程序崩溃.atoi()和atof()都返回0,总是.


这是一个SSCCE,问题是特色(atoi(str.c_str())不应该是0):

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <iostream>
#include <fstream>
#include <string>
#include <regex>

#include <sstream>

using namespace std;



int main(int argc, char* argv[])
{
    regex exp("^(.+),(.+),.+,.+,(.+),.+,.+$");
    regex exp_time("^(.+)-(.+)-(.+)");
    smatch matches;
    smatch time0;
    string line;
    ifstream infile(argv[1]);
    string last_match;
    stringstream buffer;
    string str; …
Run Code Online (Sandbox Code Playgroud)

c++ regex string char atoi

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