我最近一直在尝试Three.js,我使用Blender的导出器插件测试在混合器和导出中制作模型,所以我可以在three.js程序中使用它们.
我将附加组件包含在搅拌机中,并使用搅拌机的基本立方体模型,将其导出到.json,如出口商所说.然后我使用这个作为向导将模型导入我的three.js 但是这给了我一个错误:
Uncaught TypeError: Cannot read property 'length' of undefined.
Run Code Online (Sandbox Code Playgroud)
我已经在线搜索并尝试了一些不同的方法(比如在加载器的函数调用中包含一个材料),但似乎没有任何工作.
我还检查了stackoverflow的答案,但到目前为止似乎没有解决.如果有人会澄清我做错了什么,我将非常感激.
我的three.js程序的代码:
var WIDTH = 1000,
HEIGHT = 1000;
var VIEW_ANGLE = 45,
ASPECT = WIDTH / HEIGHT,
NEAR = 0.1,
FAR = 10000;
var radius = 50,
segments = 16,
rings = 16;
var sphereMaterial =
new THREE.MeshLambertMaterial(
{
color: 0xCCCCCC
});
var sphere = new THREE.Mesh(
new THREE.SphereGeometry(
radius,
segments,
rings),
sphereMaterial);
var pointLight =
new THREE.PointLight(0x660000);
var $container = $('#container');
var …Run Code Online (Sandbox Code Playgroud) 当我在大学的某个时候开始使用matlab时,如果他看到任何不必要的循环(他会要求交换它kron或尽可能的任何类型的索引操作),我的主管会杀了我.后来,我试图尽可能地避免在matlab上的任何循环,寻找最黑暗的matlab编码方式来做黑魔法而不是简单的循环.
有一天,我发现了cellfun,这使得黑魔法变得相当简单,我可以改变许多使用单元格和cellfun组合的循环,但有一天我看到一篇关于cellfun的帖子让我质疑我的遗传matlab知识是否真实,即:matlab循环总是比一个内置的编译函数慢,这是我非常有信心的东西.我在我的一个实现中测试了它,事实上,for循环会更快!我觉得,OMG,那些日子里做的模糊代码浪费了什么哈哈哈.从那天起,我就停止了努力尝试优化matlab代码,通常它取决于每个案例等等.
今天我看到了这个答案,它记得我尽量避免尽可能多的matlab循环(我不知道作者是否会为了性能而避免这种情况,但无论如何它提醒了所有这些matlab循环性能的事情).我想到了一个问题:cellfun比for循环好吗?什么时候会是真的?
我希望非ascii字符显示在这里讨论,但是当非ascii字符在注释中时,语法高亮消失.稍微调查一下这个问题,我在vim-manual上发现,先前启动的项目具有更高的优先级(第3项).来自help :syn-priority:
当多个语法项可能匹配时,将使用以下规则:
当多个匹配或区域项目在同一位置开始时,最后定义的项目具有优先级.
关键字优先于匹配和区域项.
- 从较早位置开始的项目优先于在以后位置开始的项目.
我目前正在使用这个:
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下选项给nonascii匹配项更高优先级nextgroup:
syntax match nonascii "[^\x00-\x7F]" nextgroup=Comment
Run Code Online (Sandbox Code Playgroud)
和contains选项:
syntax match nonascii "[^\x00-\x7F]" contains=ALL
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我还尝试暂时禁用评论(highlight clear Comment)而没有达到预期的效果(我的评论没有突出显示,但是nonascii继续没有突出显示).我错过了什么?
我正在使用SCons来安装软件包,但是当我尝试使用mex(matlab编译器)进行编译时,它会运行来自pdfTeX的其他命令.要在bash上解决这个问题,我刚刚更改了.bashrc:
别名mex ="/ Applications/MATLAB_R2009b.app/bin/mex"
但我不知道如何在SCons环境中改变它.有人知道怎么做吗?
谢谢.
此问题仅适用于unix matlabs,Windows用户将无法重现它.
我在尝试创建位于y轴标签顶部的数据提示时遇到了麻烦.下图说明了这个问题:
如您所见,靠近ylabel创建的数据提示将深入到ylabel文本,而欲望效果则相反:数据提示位于轴标签的顶部.
我使用以下(不是那么简单的)代码生成了该图,下面是可用的.您可以删除评论的行% may be removed,或者甚至只是将数据提示放在-78而不是循环上以实现更快的测试脚本,但是如果有人有一天希望它创建自定义数据提示,我会保留此代码(在这种情况下,考虑一下http://undocumentedmatlab.com/blog/controlling-plot-data-tips/):
gradientStep = 1e-1;
x=-100:gradientStep:100; xSize=numel(x);
y=x.^3-x.^2;
figH=figure(42);
lineH=plot(x,y);
ylabel('YLabel (YUnits)','FontSize',16)
xlabel('XLabel (XUnits)','FontSize',16)
dcH=datacursormode(figH);
nTips = 20; % May change the loop for a datatip at x=-78.
for pos = round(linspace(2,xSize,nTips))
datatipH=dcH.createDatatip(lineH,...
struct('Position',[x(pos) y(pos)]));
orientation = 'top-left';
if pos>1
tipText{1} = 'The grandient here is: ';
tipText{2} = ['\Deltax:',sprintf('%d',x(pos)-x(pos-1)),' XUnits'];
tipText{3} = ['\Deltay:',sprintf('%d',y(pos)-y(pos-1)),' YUnits'];
else
tipText = 'Cannot calculate gradient here.';
end
bkgColor = [1 1 .5]; …Run Code Online (Sandbox Code Playgroud) 这个问题是我在回答这个问题的时候出现的。这应该是我正在做的一些愚蠢的错误,但我无法得到它是什么错误\xe2\x80\xa6
\n\nmyMatrix = [22 33; 44 55]\nRun Code Online (Sandbox Code Playgroud)\n\n返回:
\n\n>> subsref(myMatrix, struct(\'type\',\'()\',\'subs\',{{[1 2]}} ) ); \n\nans =\n\n 22 44\nRun Code Online (Sandbox Code Playgroud)\n\n将其与细胞一起使用时:
\n\nmyCell = {2 3; 4 5} \nRun Code Online (Sandbox Code Playgroud)\n\n返回:
\n\n>> subsref(myCell,struct(\'type\',\'{}\',\'subs\',{{[1 2]}} ) );\n\nans =\n\n 2 % WHATTT?? Shouldn\'t this be 2 and 4 Matlab??\nRun Code Online (Sandbox Code Playgroud)\n\n检查subsref 文档,我们看到:
\n\n\n查看 MATLAB 如何调用表达式的 subsref:
\n\nA{1:2} 语法 A{1:2} 调用 B = subsref(A,S),其中 S.type=\'{}\' 和\n S.subs={[1 2]}。
\n
这似乎不正确,因为 subsref 返回的值只是第一个参数,而不是所有参数。 …
我怎么可能会得到double类型的处理事件和属性的列表,如一个figure,axes?
Matlab文档告诉您使用WindowButtonDownFcn,WindowButtonMotionFcn等等,以便听取您界面上发生的任何事情.问题是这个属性非常有限,如下所示:
保持变量范围
当MATLAB评估函数句柄时,相同的变量在范围内,就像创建函数句柄时一样.(相反,在基本工作空间中评估指定为字符串的回调.)这简化了在GUI中管理全局数据(如对象句柄)的过程.
是的,如果您不必从ButtonDownFcn重新定义,添加或删除回调,这是完美的,因为如果这样做,您将失去其他函数处理变量范围,因为您在新范围内声明它们可能肯定不会包含你需要的变量.
因此,一种方法是监听事件本身,而不是事件被激活时调用的属性,这样,您就不必费心重新调用ButtonDownFcn以及如何将变量保持在范围内,因为其他解决方案实施起来很慢!.如果我可以直接听取事件,就像我使用handle.listener或使用addlistenermatlab监听工具那样,我就不必为此烦恼了.
其中它似乎是最好的解决方案是这一FEX,其授权弱MATLAB WindowButtonDownFcn,WindowButtonDownFcn和任何属性"监听"功能的MATLAB了,这样就可以有都听你的图形界面改变功能的任何金额,而不必关心,如果您其他函数句柄将丢失其范围变量.
有了这个,我不需要得到matlab事件,因为它包装了我的一切.但仍然让我感到高兴的是,matlab引导用户使用破碎的功能,而不是记录更好的方法,并引导人们将所有东西包裹起来,以便他们可以按照应有的方式使用.
我知道meta.class这将给我一个班级所有的属性,事件等.对于一个继承自以下的类handle:
>> EventMeta = ?Event
EventMeta =
class with properties:
Name: 'Event'
Description: ''
DetailedDescription: ''
Hidden: 0
Sealed: 0
Abstract: 0
ConstructOnLoad: 0
HandleCompatible: 1
InferiorClasses: {0x1 cell}
ContainingPackage: []
PropertyList: [64x1 …Run Code Online (Sandbox Code Playgroud) 这种观察并不重要,因为浪费在循环语句上的时间性能可能远高于循环本身.但无论如何,我会分享它,因为我搜索并找不到关于此的话题.我总是有这样的印象:预先分配我将循环的数组,然后循环它,将比直接循环它更好,并决定检查它.代码将比较这两个fors之间的效率:
disp('Pure for with column on statement:')
tic
for k=1:N
end
toc
disp('Pure for with column declared before statement:')
tic
m=1:N;
for k=m
end
toc
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是:
Pure for with column on statement:
Elapsed time is 0.003309 seconds.
Pure for with column declared before statement:
Elapsed time is 0.208744 seconds.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?不应该预先分配更快?
事实上,matlab help for说:
因为从不创建索引向量,所以当结束表达式出现在FOR语句中时,长循环可以提高内存效率.
因此,与我的期望相反,for语句中的列表达式更好,因为它不分配向量,因此更快.
我做了以下脚本来测试其他场合我也认为会更快:
% For comparison:
N=1000000;
disp('Pure for loop on cell declared on statement:')
tic
for k=repmat({1},1,N)
end
toc
disp('Pure for loop on …Run Code Online (Sandbox Code Playgroud) 我正在使用'pander'和'sendmailr'软件包在电子邮件正文中发送一个小数据框,而不是附件.我想将它发送到一个Gmail帐户.
我很接近,但是列标题不会像他们在Rstudio中那样与电子邮件主体中的列本身对齐 - 例如 - 列标题太宽而不能与它们下面的数据列对齐.
似乎问题是在各种电子邮件客户端中压缩破折号和空格的方式(我在gmail,yahoo和hotmail中通过网络和OS X Mavericks附带的电子邮件客户端尝试了这一点).我能够通过转到"首选项"并选中标记为"使用固定宽度字体显示纯文本消息"的框来解决我的OS X电子邮件客户端中的问题,但我希望它可以在多个设备上工作,具有多个许多同事的客户等等,所以我想知道是否有一种不涉及全球电子邮件设置的方式.
以下是重现问题的代码:
library(sendmailR) # for emails from R
library(pander) # for table-formatting that does not require HTML
results <- head(iris)
pander(results) # widths look great so far...
a = pandoc.table.return(results)
strsplit(a, "\n") # widths still look great...
panderOptions('table.split.table', Inf) # show all columns on same line
msg_content <- mime_part(
pandoc.table.return(results, style = "multiline")
)
# I'm using my own gmail address for email_from and email_to
sendmail(from = email_from,
to = email_to, …Run Code Online (Sandbox Code Playgroud) 我在matlab中遇到了问题.我输出一个图像,如示例所示,并通过print命令保存.我想要做的是保存图像,使得没有死空间,即我想删除保存的图像中的空白区域.
示例: 
黑色边框显示图像占据的总面积.这真是一个空间的浪费.我想删除它.我想要做的是:
我手动删除了图像周围的白色区域.但我想通过print命令自动执行此操作.可以吗?如果可能,标题仍然可以吗?即使它被删除然后也没关系,但如果标题可以保持更好.
我知道dgemv是矩阵向量,但哪个更有效?使用dgemm直接矩阵乘法,或使用dgemv通过与矩阵B的每一列乘以使用矩阵A做矩阵乘法dgemv?
好吧,我已经检查了一段时间,找不到答案。
\n\n我想附加一个暴露给 python 的对象,比如 Foo:
\n\nstruct Foo {\n Foo(){ std::cout << "Creating a Foo object" << std::endl;}\n virtual ~Foo(){ std::cout << "Destroying a Foo object" << std::endl;}\n};\nRun Code Online (Sandbox Code Playgroud)\n\n我使用 Foo 继承的对象,有时我想将它们附加到 python 列表中。为此,我创建了一个 FooWrapper,它继承自 Foo 并使用复制构造函数
\n\nstruct FooWrapper : public Foo {\n FooWrapper(const Foo& foo):Foo(foo){ std::cout << "Creating a copy from foo using FooWrapper" << std::endl;} \n virtual ~FooWrapper(){ std::cout << "Destroying a FooWrapper object" << std::endl;}\n};\nRun Code Online (Sandbox Code Playgroud)\n\n这是暴露给Python的:
\n\nBOOST_PYTHON_MODULE(foo_module)\n{\n using namespace py = boost::python;\n py::class_<FooWrapper>("FooWrapper", …Run Code Online (Sandbox Code Playgroud)