来自维基百科:
交叉乘积是对三维欧几里德空间中的两个向量的二元运算,其导致另一个向量垂直于包含两个输入向量的平面.
鉴于定义仅定义在三个(或七个,一个和零)维度中,如何计算两个二维向量的叉积?
我见过两个实现.一个返回一个新的向量(但只接受一个向量),另一个返回一个标量(但是是两个向量之间的计算).
实现1(返回标量):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Run Code Online (Sandbox Code Playgroud)
实现2(返回向量):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
Run Code Online (Sandbox Code Playgroud)
为什么不同的实施?我将使用标量实现?我将使用矢量实现?
我问的原因是因为我自己编写了一个Vector2D类,并且不知道使用哪种方法.
我在会话中有一个Java Set,在会话中也有一个变量.我需要能够判断集合中是否存在该变量.
我想使用Java对Lists和Sets的contains(Object)方法来测试该对象是否存在于集合中.
这可以在JSTL中做到吗?如果是这样,怎么样?:)
谢谢,亚历克斯
我正在开发一个JSP,我需要调用来自Bean的对象的方法.该页面的先前版本不使用JSTL,它可以正常工作.我的新版本有这样的设置:
<jsp:useBean id="pageBean" scope="request" type="com.epicentric.page.website.PageBean" />
<c:set var="pageDividers" value="<%= pageBean.getPageDividers() %>" />
<c:set var="numColumns" value="${pageDividers.size()}" />
Run Code Online (Sandbox Code Playgroud)
变量pageDividers
是一个List
对象.
我遇到了这个问题:当我要求pageDivider
的大小时,会抛出异常.我知道这是一个简单的JTSL错误 - 我做错了什么?
错误消息是:
未指定默认命名空间时,函数大小必须与前缀一起使用
如何正确访问或调用我的pageDividers
对象的方法?
我有一个指针容器,我想迭代,调用一个成员函数,其参数是一个参考.如何使用STL执行此操作?
我目前的解决方案是使用boost :: bind和boost :: ref作为参数.
// Given:
// void Renderable::render(Graphics& g)
//
// There is a reference, g, in scope with the call to std::for_each
//
std::for_each(
sprites.begin(),
sprites.end(),
boost::bind(&Renderable::render, boost::ref(g), _1)
);
Run Code Online (Sandbox Code Playgroud)
一个相关的问题(我从中派生出我当前的解决方案)是boost :: bind,其函数的参数是引用.这特别询问如何使用boost进行此操作.我问如何在没有提升的情况下完成.
编辑:有一种方法可以做同样的事情,而不使用任何boost
.通过使用std::bind
和朋友相同的代码可以在C++ 11兼容的编译器中编写和编译,如下所示:
std::for_each(
sprites.begin(),
sprites.end(),
std::bind(&Renderable::render, std::placeholders::_1, std::ref(g))
);
Run Code Online (Sandbox Code Playgroud) 我有一种情况,循环遍历排序的节点集并在每个节点上应用模板:
<div id="contractscontainer">
<xsl:for-each select="document">
<xsl:sort select="content[@name='ClientName']/text()" />
<xsl:apply-templates select="." mode="client-contract" />
</xsl:for-each>
</div>
Run Code Online (Sandbox Code Playgroud)
我想对节点集中的"第一个"5个节点做一些特殊的事情,并渲染它们的嵌套元素.问题是它们需要的顺序与它们的排序顺序相同(因为它们在循环中).
我曾计划通过使用两个xsl:for-each
元素来执行此操作,每个元素都具有从集合中选择的正确节点.但是,我不能这样做,因为在我选择"第一个" 之前需要对它们进行排序.
例:
<div id="contractscontainer">
<div class="first-five">
<xsl:for-each select="document[position() < 6]">
<xsl:sort select="content[@name='ClientName']/text()" />
<xsl:apply-templates select="." mode="client-contract" />
</xsl:for-each>
</div>
<div class="rest-of-them">
<xsl:for-each select="document[position() > 5]">
<xsl:sort select="content[@name='ClientName']/text()" />
<xsl:apply-templates select="." mode="client-contract" />
</xsl:for-each>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我认为这不会起作用,因为我在排序之前按位置选择节点,但我不能xsl:sort
在外面使用xsl:for-each
.
我接近这个错误吗?
编辑:我当前的解决方案是对它们进行排序并将排序的集合存储在另一个变量中:
<xsl:variable name="sorted-docs">
<xsl:for-each select="document">
<xsl:sort select="content[@name='ClientName']/text()" />
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:variable> …
Run Code Online (Sandbox Code Playgroud) 我将一个object(TTF_Font
)存储在shared_ptr
从第三方API提供给我的对象中.我不能在对象上使用new或delete,因此shared_ptr
也提供了一个"freeing"仿函数.
// Functor
struct CloseFont
{
void operator()(TTF_Font* font) const
{
if(font != NULL) {
TTF_CloseFont(font);
}
}
};
boost::shared_ptr<TTF_Font> screenFont;
screenFont = boost::shared_ptr<TTF_Font>( TTF_OpenFont("slkscr.ttf", 8), CloseFont() );
Run Code Online (Sandbox Code Playgroud)
如果,稍后,我需要明确释放此对象,这样做是正确的:
screenFont.reset();
Run Code Online (Sandbox Code Playgroud)
然后让screenFont
(实际shared_ptr
物体)自然地被摧毁?
我有一个简单的python脚本,如下所示:
import sys
lines = sys.argv[1]
for line in lines.splitlines():
print line
Run Code Online (Sandbox Code Playgroud)
我想从命令行(或.bat文件)调用它,但第一个参数可能(并且可能会)是一个包含多行的字符串.怎么做到这一点?
当然,这有效:
import sys
lines = """This is a string
It has multiple lines
there are three total"""
for line in lines.splitlines():
print line
Run Code Online (Sandbox Code Playgroud)
但我需要能够逐行处理一个参数.
编辑:这可能是一个Windows命令行问题而不是Python问题.
编辑2:感谢所有好的建议.它看起来不太可能.我不能使用另一个shell,因为我实际上试图从另一个程序调用脚本,该程序似乎在幕后使用Windows命令行.
我有一个WebBrowser控件坐在一个Form上,它周围有一个恼人的2px嵌入式边框.它导致我的内容被右侧和底部的4像素剪辑,我无法弄清楚如何摆脱它.控件本身没有任何BorderStyle属性 - 如何删除边框?
查看屏幕截图中的红色区域:
让它停下来!http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif
我希望WebBrowser看起来像蓝色区域 - 也就是说,填充Form并与Form的边缘齐平.
所以我有一个网站,我正在使用位于屏幕右上角的基本菜单.它的链接如下:
| Home | Blog | Results | Pictures | Our Location |
Run Code Online (Sandbox Code Playgroud)
不时形成我需要向菜单添加新链接或更改其中一个链接所指向的位置.这意味着在菜单存在的每个页面上我必须手动更改链接.当然有一些方法可以在每个页面上放置一个主菜单.
还是我在做梦?
如何通过jquery检查字符串是否包含任何数值?
我搜索了很多例子,但我只能检查一个数字,而不是STRING中的数字.我想找到类似的东西$(this).attr('id').contains("number");
(p/s:我的DOM id将是Large_a
(没有数值),Large_a_1
(带数值)Large_a_2
,等等)
我应该使用什么方法?