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) 我的数据看起来像这样......
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来构建散点图,我对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) 自从我使用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: … 我的目标是拥有一个svg:ellipse可用于调整大小和旋转的四个控制点.如果旋转变换应用于椭圆本身,我的代码工作正常,但我想将旋转应用于容器,svg:g以便控制点同时旋转而无需额外的代码.当我将变换应用于组时,我认为旋转行为不正确,因为我没有正确地考虑变换的坐标.
见这里:http://jsfiddle.net/PbKYn/3/
请注意,角度在旋转开始附近的正值和负值之间闪烁,而鼠标的2pi旋转仅旋转形状1pi.(我不认为我的angleBetweenPoints功能是错误的,因为如果我将旋转应用于<ellipse>而不是<g>旋转,则旋转是完美的.)
我究竟做错了什么?谢谢-
我正在尝试使用nan来计算附加组件中浮点数组上的某些内容,然后将其作为Float32Array.
但是,虽然 args 具有IsNumber()和NumberValue()功能,但它只有一个IsFloat32Array()功能而没有Float32Array()。
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) 我正在寻找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)
它不起作用.
任何的想法?
谢谢!
我有一个 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 库。
我正在尝试创建一个基本的本机节点插件,其中从节点传递一个 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++ 的正确方法是什么?甚至有可能吗?