小编Nik*_*s R的帖子

将纬度和经度转换为3D空间中的点

我需要将纬度和经度值转换为三维空间中的一个点.我现在已经尝试了大约2个小时,但是我没有得到正确的结果.

等距离长方圆柱坐标来自openflights.org.我已经尝试了几种cos罪的组合,但结果看起来永远不像我们心爱的小地球.


在下文中,您可以看到应用Wikipedia建议的转换结果.我想人们可以从背景中猜出是什么c4d.Vector.

def llarToWorld(latit, longit, altid, rad):
    x = math.sin(longit) * math.cos(latit)
    z = math.sin(longit) * math.sin(latit)
    y = math.cos(longit)
    v = c4d.Vector(x, y, z)
    v = v * altid + v * rad
    return v
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

红色:X,绿色:Y,蓝色:Z

人们确实可以识别出北美和南美,特别是墨西哥湾周围的土地.然而,它看起来有点挤压,有点在错误的地方..


结果看起来有点旋转,我想,我尝试了交换纬度和经度.但结果有点尴尬.

def llarToWorld(latit, longit, altid, rad):
    temp = latit
    latit = longit
    longit = temp
    x = math.sin(longit) * math.cos(latit)
    z = math.sin(longit) * math.sin(latit)
    y = math.cos(longit)
    v …
Run Code Online (Sandbox Code Playgroud)

python math 3d data-conversion latitude-longitude

19
推荐指数
3
解决办法
2万
查看次数

基于现有变量循环的范围

在C++ 11中使用基于for循环的范围和现有变量,我希望该变量用循环后的最后一次迭代的值填充.但是,当我测试它时,我得到了不同的结果.

例:

#include <iostream>
#include <vector>
using namespace std;

int main() {
  std::vector<int> v;
  v.push_back(2);
  v.push_back(43);
  v.push_back(99);

  int last = -50;
  for (last : v)
    std::cout << ":" << last << "\n";

  std::cout << last;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. MSVC 2013似乎不支持基于范围的循环而没有类型声明
  2. GCC-5.1自动引入一个新变量或将其设置回初始值,给出

    :2
    :43
    :99
    -50

我想MSVC再次成为MSVC,但是GCC在这里呢?为什么last不在99最后一行?


根据标准定义,我会期待我在第一句中描述的行为.

{
  auto && __range = range_expression ; 
  for (auto __begin = begin_expr, __end = end_expr; 
       __begin != __end; ++__begin) { 
    range_declaration = *__begin; 
    loop_statement …
Run Code Online (Sandbox Code Playgroud)

c++ gcc for-loop visual-c++ c++11

19
推荐指数
2
解决办法
1956
查看次数

传递**kwargs和尾随逗号的SyntaxError

我想知道为什么这是Python 3.4中的SyntaxError:

some_function(
  filename = "foobar.c",
  **kwargs,
)
Run Code Online (Sandbox Code Playgroud)

它在删除之后的尾随逗号时有效**kwargs.

python syntax-error python-3.x python-3.4

16
推荐指数
2
解决办法
896
查看次数

在#define中使用双冒号(::)

我可以使用双冒号#define吗?我想在实现文件中保存一些写法,例如:

// foo.h
#define template template <class T>
#define foo:: foo<T>::

template class foo {
  T& baz();
};

#include "foo.tpp"
#undef template
#undef foo::

// foo.tpp
template T& foo::baz() {
    // do stuff.
}
Run Code Online (Sandbox Code Playgroud)

但我得到的语法错误我并不理解.(请参阅键盘上的示例):

第11行:错误:在宏名称后面缺少空格
第10行:错误:#undef指令结束时的额外标记
第4行:错误:'foo'不是
由于-Wfatal-errors而终止的模板编译.

c++ compiler-errors c-preprocessor

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

为什么阅读不是线程安全的?

我想知道为什么从内存中读取不是线程安全的.在我迄今为止看到的内容中,尤其是这个问题,从内存中读取似乎并不是线程安全的.

我已经在Python编写了一段时间,现在进入C++.我从来没有听说过Python中的读取不是线程安全的.

如果我错了请纠正我,但如果没有,请告诉我为什么从内存中读取不是线程安全的.

c++ thread-safety

13
推荐指数
3
解决办法
5734
查看次数

HTML就像布局一样

我正在尝试实现自己的基于流量的小布局引擎.它应该模仿HTML布局的行为,但只模仿渲染树,而不是DOM部分.渲染树中元素的基类是 Node类.它有:

  • DOM中元素的链接(用于构建具有该库的渲染树的元素)
  • 对它的父级的引用(这是一个ContainerNode实例或无,见后面)
  • 对布局选项的引用
  • X,Y,宽度和高度(在计算layout()尺寸之后计算compute_size()位置.虽然位置由layout()父方法定义,但尺寸由选项参考定义).

它的方法是:

  • reflow()调用compute_size()layout()
  • compute_size() 用于计算节点的宽度和高度.
  • layout()用于定位节点节点,而不是节点本身.
  • paint() 哪个被库的用户覆盖.

ContainerNode班正在实施的子节点的处理.它提供了一个名为的新方法add_node(),它将传递的节点添加到容器子节点.该函数还接受一个默认为False 的参数force,因为除了force设置为True 之外,允许容器拒绝传递的节点.

这两个类没有实现任何布局算法.我的目标是为不同类型的布局创建不同的类(在CSS中,主要由display属性定义).昨晚我做了一些文本布局测试,你可以在pastebin.com找到我的代码(需要pygame).您可以将其保存到python脚本文件并像这样调用它:

python text_test block -c -f "Georgia" -s 15
Run Code Online (Sandbox Code Playgroud)

注意:代码非常糟糕.我很欣赏有关深层次误解的评论.

InlineNodeRow上面提到的代码中的类实际上代表了我如何实现类似于display:inline属性的节点(与之结合NodeBox)的想法.

问题1 - 内联文本的边距和填充

回到我在库中的当前方法:来自文本的单个单词也将表示为单个节点(就像上面的代码中一样).但我注意到<span>标签中有两个关于边距和填充的内容.

  1. 设置保证金时,仅考虑水平保证金,忽略垂直保证金.
  2. 填充溢出父容器,不会"移动"span节点.

http://jsfiddle.net/CeRkT/1/.

我在这里看到问题:当我想计算它的大小时InlineNodeBox,我会问一个文本节点的大小并将其添加到节点的大小.但是文本节点大小包括它的边距和填充,这包括在HTML渲染器的定位中.因此,以下代码不正确:

def compute_size(self): …
Run Code Online (Sandbox Code Playgroud)

python layout reflow

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

使用Bash的Windows GitLab CI Runner

我试图在Windows上使用bash作为GitLab CI Runner的shell.

concurrent = 1
check_interval = 0

[[runners]]
  name = "DESKTOP-RQTQ13S"
  url = "https://example.org/ci"
  token = "fooooooooooooooooooobaaaaaaaar"
  executor = "shell"
  shell = "bash"
  [runners.cache]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到一个选项来指定CI Runner应该使用的实际shell程序.默认情况下,它只是尝试运行bash它找不到的.我不知道为什么,因为当我打开Windows命令行并输入bash它时.

Running with gitlab-ci-multi-runner 1.9.4 (8ce22bd)
Using Shell executor...
ERROR: Build failed (system failure): Failed to start process: exec: "bash": executable file not found in %PATH%
Run Code Online (Sandbox Code Playgroud)

我尝试将文件添加bash.cmd到包含的用户目录中

@"C:\Program Files\Git\usr\bin\bash.exe" -l
Run Code Online (Sandbox Code Playgroud)

这给了我这个奇怪的错误:

Running with gitlab-ci-multi-runner 1.9.4 (8ce22bd)
Using Shell executor...
Running on DESKTOP-RQTQ13S...
/usr/bin/bash: line 43: /c/Users/niklas/C:/Users/niklas/builds/aeb38de4/0/niklas/ci-test.tmp/GIT_SSL_CAINFO: No …
Run Code Online (Sandbox Code Playgroud)

windows bash gitlab-ci gitlab-ci-runner

11
推荐指数
2
解决办法
9402
查看次数

模板构造函数继承的标准符合语法是什么?

GCC 4.8.1接受

template <typename T>
class Subclass : public Baseclass<T>
{
public:
    using typename Baseclass<T>::Baseclass;
};
Run Code Online (Sandbox Code Playgroud)

但MSVC没有.另一方面,MSVC接受

template <typename T>
class Subclass : public Baseclass<T>
{
public:
    using typename Baseclass::Baseclass;
};
Run Code Online (Sandbox Code Playgroud)

但海湾合作委员会没有.然后我在这个问题中看到了另一种声明:c ++ 11继承模板构造函数

template <typename T>
class Subclass : public Baseclass<T>
{
public:
    using typename Baseclass::Baseclass<T>;
};
Run Code Online (Sandbox Code Playgroud)

海湾合作委员会表示,MSVC警告称"过时的申报风格"

prog.cpp:8:24: error: ‘template<class T> class Baseclass’ used without template parameters
        using typename Baseclass::Baseclass<T>;
Run Code Online (Sandbox Code Playgroud)

我认为第一个例子是标准的符合语法.直观地说,它对我来说是正确的.

什么是c ++ 11标准符合语法?

c++ constructor using-statement c++11

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

Python-Sphinx:链接到外部文件中的Section

我想链接到外部文件中的一个部分,但我无法让它工作.这:ref:似乎不是全局的,或者我使用它错了吗?

..
    File: some_file.rst

.. _ref_section:

Some Section
------------

Paragraph, foo bar lorem ipsum.
Run Code Online (Sandbox Code Playgroud)


..
    File: some_other_file.rst

.. seealso:: :ref:`ref_section`
Run Code Online (Sandbox Code Playgroud)

如何从不同的文件交叉引用Sections?

cross-reference python-sphinx

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

Valgrind不显示行号

我试图找出使用Valgrind对一块内存进行无效写入的位置.它告诉我们存在这样一个问题,也就是说什么功能,但不是在哪一行.虽然功能非常小,但我想在Valgrind中显示行号.我在Valgrind的一些输出上看过这个,但目前它们没有显示,我想知道为什么.

输出如下:

niklas@emerald:~/Arbeitsfläche/spyr/bin/Debug$ valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./spyr
[...]
==4404== Invalid write of size 4
==4404==    at 0x8048849: sp_ParticleBuffer_init (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==    by 0x8048BFC: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==    by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==  Address 0x422a0a0 is 4 bytes after a block of size 4 alloc'd
==4404==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==4404==    by 0x8048BC1: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==    by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== 
==4404== Invalid write of size 4
==4404==    at 0x8048865: sp_ParticleBuffer_init (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==    by 0x8048BFC: …
Run Code Online (Sandbox Code Playgroud)

c linux ubuntu valgrind

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