小编Zac*_*chB的帖子

将uint32的向量转换为float向量的最有效方法是什么?

x86没有从无符号 int32 转换为浮点的SSE指令.实现这一目标的最有效指令序列是什么?

编辑:为了澄清,我想做以下标量操作的向量序列:

unsigned int x = ...
float res = (float)x;
Run Code Online (Sandbox Code Playgroud)

EDIT2:这是一个用于进行标量转换的简单算法.

unsigned int x = ...
float bias = 0.f;
if (x > 0x7fffffff) {
    bias = (float)0x80000000;
    x -= 0x80000000;
}
res = signed_convert(x) + bias;
Run Code Online (Sandbox Code Playgroud)

floating-point x86 assembly sse

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

是否可以在带有动态域的序数范围内使用rangeBand()?

我的数据看起来像这样......

var data = [{name:'a', value : 97},
          {name:'b', value : 24},
          {name:'c', value : 10}];
Run Code Online (Sandbox Code Playgroud)

我有一个像这样创建的序数量表......

var y = d3.scale.ordinal().rangeBands([0, 30 * data.length]);
Run Code Online (Sandbox Code Playgroud)

我用它来创建这样的基本图...

    chart.selectAll("rect")
        .data(data)
        .enter().append("svg:rect")
        .attr("y", function(d,i){ return y(d.name);})
        .attr("width", function(d,i){ return x(d.value);})
        .attr("height", y.rangeBand());
Run Code Online (Sandbox Code Playgroud)

根据d3文档(此处),您无需为序数规范指定域,并且在尝试使用它时将填充它.在我的情况下,但是y(d.name)总是返回0并且y.rangeBand()引发异常,即使我看到域数组已经填充在scale对象中.

所以,我通过预先定义我的域来解决这个问题...

.domain(data.map(function (d){ return d.name;}))
Run Code Online (Sandbox Code Playgroud)

但我希望能够动态添加到此域,如果我这样做,它不会超出创建时设置的原始值.这甚至可能吗?

我对d3很新,所以我可能会遗漏一些重要的东西.

d3.js

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

如何在d3的散点图中绘制两个轴的正值和负值?

我正在使用d3来构建散点图,我对x和y轴的值集都有正值和负值.这是我第一次尝试使用d3,我从介绍性教程中收集过,例如在圣诞节的第十天,使用d3.js弄脏数据,关键是正确设置x和y比例.

接下来,我发现了这个教程:带有负值的条形图,这几乎帮助我做到了正确(我认为).我的数据集太大了,不能放在这里,但这里是代码我有一个我的数据样本:

<div id="compareAll"></div>
<script>
window.onload = function() {

var dataSet = [ [4,4], [-4,4], [-4,-4], [4,-4], ];
var x0 = Math.max(-d3.min(dataSet[0]), d3.max(dataSet[0]));
var xScale = d3.scale.ordinal()
             .domain([-x0,x0])
             .range([0,10]);
var yScale = d3.scale.ordinal()
             .domain(d3.range(dataSet[1])
             .rangeRoundBands([0,10]);

var svg = d3.select("#compareAll")
.append("svg")
.attr("width", 10)
.attr("height",10)

svg.selectAll("circle")
.data(dataSet)
.enter()
.append("circle")
.attr("cx", function(d) {
      return xScale(d[0]); 
})
.attr("cy", function(d) {
      return yScale(d[1]); 
})
.attr("r",4); 

var xAxis = d3.svg.axis()
.scale(xScale)
.tickSize(1);

var yAxis = d3.svg.axis()
.scale(yScale)
.tickSize(1);

svg.append("svg:g")
.attr("class", "x axis") …
Run Code Online (Sandbox Code Playgroud)

d3.js

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

从v8函数中获取默认参数的最短路径(单线程)?

自从我使用C++以来已经有很长一段时间了,甚至更长时间以来我一直围绕着硬类型.我只是在寻找一个工作的衬管来从v8获取参数,或者在没有提供参数时使用默认值.

v8::String::Utf8Value arg0(args[0]);
v8::String::Utf8Value arg1(args[1]);
v8::String::Utf8Value arg2(args[2]);
const char *username = (args.Length() > 0) ? *arg0 : "";
const char *password = (args.Length() > 1) ? *arg1 : "";
const char *service = (args.Length() > 2) ? *arg2 : "login";
Run Code Online (Sandbox Code Playgroud)

输出:

func(); // { username: "", password: "", service: "login" }
func('1'); // { username: "1", password: "", service: "login" }
func('1', '2'); // { username: "1", password: "2", service: "login" }
func('a', 'b', 'c'); // { username: …

c++ v8 node.js node.js-addon

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

拖动以旋转SVG:g组

我的目标是拥有一个svg:ellipse可用于调整大小和旋转的四个控制点.如果旋转变换应用于椭圆本身,我的代码工作正常,但我想将旋转应用于容器,svg:g以便控制点同时旋转而无需额外的代码.当我将变换应用于组时,我认为旋转行为不正确,因为我没有正确地考虑变换的坐标.

见这里:http://jsfiddle.net/PbKYn/3/

请注意,角度在旋转开始附近的正值和负值之间闪烁,而鼠标的2pi旋转仅旋转形状1pi.(我不认为我的angleBetweenPoints功能是错误的,因为如果我将旋转应用于<ellipse>而不是<g>旋转,则旋转是完美的.)

我究竟做错了什么?谢谢-

html5 svg transform rotation d3.js

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

使用 nan 在插件中接收和返回 Float32Array

我正在尝试使用nan来计算附加组件中浮点数组上的某些内容,然后将其作为Float32Array.

但是,虽然 args 具有IsNumber()NumberValue()功能,但它只有一个IsFloat32Array()功能而没有Float32Array()

我试图查看那些:1 , 2教程,但没有找到合适的示例。

NAN_METHOD(Calc) {
  NanScope();

  if (args.Length() < 2) {
    NanThrowTypeError("Wrong number of arguments");
    NanReturnUndefined();
  }

  if (!args[0]->IsNumber() || !args[1]->IsFloat32Array()) {
    NanThrowTypeError("Wrong arguments");
    NanReturnUndefined();
  }
  /* a vector of floats ? */  args[0]-> ???;
  double arg1 = args[1]->NumberValue();
  // some calculation on the vector

  NanReturnValue(/* Return as a Float32Array array */);
}
Run Code Online (Sandbox Code Playgroud)

javascript c++ v8 node.js node.js-addon

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

D3鼠标发布活动

我正在寻找D3上的发布活动.

实际上,我的例子有:

.on("mouseover", function(data){...} )
.on("mousemove", function(data){...} )
.on("mouseout", function(data){...} )
Run Code Online (Sandbox Code Playgroud)

这是完美的,但是.如果我尝试做类似的事情

.on("release", function(data){...} )
Run Code Online (Sandbox Code Playgroud)

它不起作用.

任何的想法?

谢谢!

javascript events javascript-events d3.js

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

libuv线程通信

我有一个 C++ 库,客户端应用程序使用这个库从服务器查询数据。这个库创建了一个单独的线程与服务器通信,查询结果将作为回调函数中的参数传递。

现在我想将这个 c++ lib 包装到 nodejs 原生模块,因为回调函数是在这个 lib 自己的线程中调用的,为了将查询结果传递给 js 环境,我相信我必须使用 libuv 的 uv_async_send(uv_async_t* async) 方法来传递两个线程之间的数据。(如果我错了,请纠正我)

根据libuv 的文档

警告:libuv 将合并对 uv_async_send() 的调用,也就是说,并非每次调用都会产生回调的执行。例如:如果在调用回调之前连续调用 uv_async_send() 5 次,则回调只会被调用一次。如果在调用回调后再次调用 uv_async_send() ,则会再次调用。

这个警告是否意味着 uv_async_send 可能导致数据丢失?我想知道 libuv 是否为这个问题提供了更好的解决方案,或者我应该使用其他一些 thead 库。

c++ multithreading node.js libuv node.js-addon

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

GCE持久磁盘爆发和限制指标

Google Cloud Platform/Compute Engine (GCP/GCE) 标准永久性磁盘据称每 GB 的持续读取吞吐量高达 0.12 MB/s(参考)。我知道爆发存在,但它的具体行为没有在任何地方描述。

instance/disk/throttled_read_bytes_count指标被描述为“受限制的读取操作中字节的增量计数”(参考)。如果该值为零,是否意味着增加磁盘大小不会提高应用程序的性能?-- 即当前最大吞吐量+突发可以100%满足我们的磁盘读取需求?

(还有一个 read_ops 指标,在我们的例子中也为零。)

google-compute-engine google-cloud-platform

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

Node-Addon-Api 传递数组作为函数参数

我正在尝试创建一个基本的本机节点插件,其中从节点传递一个 javascript 数组,然后在 C++ 中进行处理。问题是我无法弄清楚如何正确传递数组。我可以毫无问题地实例化数组,但使用 info[0].as 分配它会引发错误。

我的 C++ 代码是

#include <napi.h>

using namespace Napi;
using namespace std;

Value Add(const CallbackInfo& info) 
{
  Env env = info.Env();


  Array result = Napi::Array::New(env);
  Array a = info[0].As<Array>;

  double arg1 = info[1].As<Number>().DoubleValue();
  Number num = Napi::Number::New(env, 2 + arg1);

  return num;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

../cppsrc/main.cpp: In function ‘Napi::Value Add(const Napi::CallbackInfo&)’:
../cppsrc/main.cpp:12:21: error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type ‘Napi::Array’ requested
   Array a = info[0].As<Array>;
             ~~~~~~~~^~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

将数组传递给 C++ 的正确方法是什么?甚至有可能吗?

c++ node.js node.js-addon

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