我正在研究小行星克隆.一切都是2D,用C++编写.
对于小行星,我正在生成随机的N边多边形.我保证他们是Convex.然后我旋转它们,让它们旋转速度,让它们飞过太空.这一切都有效,非常漂亮.
对于碰撞,我使用的是我自己想到的算法.这可能是一个坏主意,如果推动,我可能会废弃整个事情,并在互联网上找到一个教程.
我已经编写并实现了所有内容,并且碰撞检测工作正常....大部分时间.当屏幕上明显发生碰撞时,它会随机失败,有时会在没有任何触摸时指示碰撞.我要么在某处扯下我的实现,要么我的算法很糟糕.由于我的实现的大小/范围(通过几个源文件),我不想打扰你,只是想让某人检查我的算法实际上是合理的.那时我可以继续寻找一个大虫子.
对于每个小行星,我有一个函数输出绘制小行星时每个顶点应该在哪里.对于每对相邻的顶点,我为它们所在的线生成公式, y=mx+b格式化.然后我从我的一个船顶点开始,测试该点以查看它是否在小行星内.我首先插入点的X坐标,然后将输出与实际Y值进行比较.这告诉我该点是在线之上还是之下.然后我对小行星的中心做同样的事情,以确定哪一半的线被认为是小行星的"内部".然后我重复每对顶点.如果我找到一条线,我的点与小行星的中心不在同一侧,我知道没有碰撞,并且退出检测到该点.由于我的船上有3个点,我必须测试下一个点.如果所有3个点都提前退出,那么船上的任何一点都没有碰撞,我们就完成了.如果由小行星组成的线在所有侧面上绑定任何点,则它位于小行星内部,并设置碰撞标志.
我用这种算法发现的两个问题是:
我已经确保所有多边形都是凸面的,并且已经编写了代码来处理未定义的斜率问题(NAN如果我们除以0,则应该双重返回,因此很容易测试它).
那么,这应该有用吗?
EGL 看起来像是有史以来记录最差的 Khronos 项目,我确实找不到有关该项目的任何具体信息,但它看起来很有前途,最后有一个 GLUT/FreeGlut 的标准化替代方案。
我的观点是,假设我想要在 linux 桌面上的窗口中或没有窗口(没有装饰)的应用程序中使用 EGL 上下文,作为程序员,我应该向谁咨询以获得该 EGL 上下文?例如,如果我使用 QT,那么 QT 是否应该实现 EGL?奥格?我?
我正在构建一个高性能的多线程程序.一些函数的持续时间和执行的重叠计数很多,我希望以某种方式产生一种视觉时间轴图,显示函数何时开始及其持续时间.我希望有类似于NVIDIA分析器的图表.使用该boost::chrono包我已经收集了时间表,但找不到任何用于绘制它们的软件或API.有人知道吗?
问候
丹尼尔
浏览http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html
execve我理解了调用并试图重写它的nasm 程序。
一些背景信息:
int execve(const char *filename, char *const argv[], char *const envp[]);
Run Code Online (Sandbox Code Playgroud)
因此,eax = 11( 的函数调用号execve),ebx应该指向char* filename,ecx应该指向argv[](这将与第一个参数相同,ebx因为第一个参数是其*filename本身,例如在本例中为“/bin/sh”),并且edx将指向envp[](null在本例中)。
原始nasm代码:
global _start
section .text
_start:
xor eax, eax
push eax
; PUSH //bin/sh in reverse i.e. hs/nib//
push 0x68732f6e
push 0x69622f2f
mov ebx, esp
push eax
mov edx, esp
push ebx
mov ecx, esp
mov al, …Run Code Online (Sandbox Code Playgroud) 对不起,可能是一个菜鸟问题.
我明白了:
Prelude> all (\x -> x==1) ([n | n <- [1..20]])
False
Prelude> all (\x -> x == 1) ([n | n <- [1..20]])
<interactive>:17:44:
parse error (possibly incorrect indentation or mismatched brackets)
Prelude>
Run Code Online (Sandbox Code Playgroud)
即x==1工作,但如果我改变x == 1它没有.但那是为什么呢?例如,1 == 1似乎很好地工作.
编译器版本:
$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3
Run Code Online (Sandbox Code Playgroud)
添加了证明截图; 很难看到,但你可以看到输入行不包含任何奇怪的东西.

今天我们在SML中学到了"打结",你有类似的东西
val tempFunc = ref (fn k:int => true);
fun even x = if x = 0 then true else !tempFunc(x-1);
fun odd x = if x = 0 then false else even(x-1);
tempFunc := odd;
Run Code Online (Sandbox Code Playgroud)
而我正在使用类似的ocaml,但我只是在做同样的事情.我发现的最接近的是
let tempFunc {contents =x}=x;;
Run Code Online (Sandbox Code Playgroud)
但我真的不明白,以及如何将tempFunc绑定到另一个函数.任何帮助表示赞赏!
我对java中的内存分配是在运行时还是在编译时感到困惑。
例如:
class Test{
int a;
public Test(){
a=10;
}
};
// somewhere else
Test t = new Test();
Run Code Online (Sandbox Code Playgroud)
是a在运行时分配还是在编译时分配?如果在编译时,java如何在直接获取已编译.class文件的VM上运行?
也:
什么时候a赋值10?
参考变量如何工作t?
谢谢。
我是OCaml的新手(在Haskell中有一些先验知识).我想说服自己采用OCaml.因此,我试图比较C和OCaml之间的性能.我写了以下天真的蒙特卡罗Pi-finder:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
const int N = 10000000;
const int M = 10000000;
int count = 0;
for (int i = 0; i < N; i++) {
double x = (double)(random() % (2 * M + 1) - M) / (double)(M);
double y = (double)(random() % (2 * M + 1) - M) / (double)(M);
if (x * x + y * y <= 1) {
count++;
}
} …Run Code Online (Sandbox Code Playgroud) 就像标题所说的那样,我正在寻找Clojure中的一个函数,它返回一个映射中第一个元素的索引以满足条件,我知道该怎么做,但是如果API中已有的东西我想要给我们.
例:
(strange-fn #(even? %) '(1 3 5 7 9 4))
=> 5
Run Code Online (Sandbox Code Playgroud) 如果这是一个非常基本的问题,我很抱歉,我对C++很陌生.我正在尝试为它定义自己的向量类和迭代器.但是,每当我重载操作符时,返回的值始终是一个地址.
例如,以下代码0x7fb6dbc000e0 0x7fb6dbc000e0在我想要打印时打印1 0
由于我一直在搞乱语法一段时间,一些运算符看起来有点不同,这只是为了让你看到我尝试过的一些东西.
test.cc
#include <iostream>
#include "TwoWayVector.cc"
int main(){
TwoWayVector<int> numbers;
numbers.push_back(3);
numbers.push_back(2);
TwoWayVectorIterator<int>* beginning = numbers.begin();
TwoWayVectorIterator<int>* beginning2 = numbers.begin();
cout << beginning==beginning2;
cout << beginning != beginning2;
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
TwoWayVector.cc
using namespace std;
#include "TwoWayVectorIterator.cc"
template <class T> class TwoWayVector{
public:
T* data;
int capacity;
int nextFree;
TwoWayVector(){
capacity = 10;
nextFree = 0;
data = new T[capacity];
}
~TwoWayVector(){
delete data;
}
T& operator[](const int index){
if( …Run Code Online (Sandbox Code Playgroud) c++ ×4
ocaml ×2
reference ×2
2d ×1
algorithm ×1
allocation ×1
assembly ×1
clojure ×1
egl ×1
execve ×1
freeglut ×1
function ×1
haskell ×1
iterator ×1
java ×1
nasm ×1
opengl ×1
optimization ×1
performance ×1
pointers ×1
profiling ×1
shellcode ×1
sml ×1
sublimetext ×1
sublimetext2 ×1
syntax ×1
templates ×1