小编itm*_*a96的帖子

光线追踪球体反射bug

我正在尝试实现光线跟踪算法,我在计算球形物体的反射光线时遇到了一些麻烦.对于某些特定的光线,反射光线似乎只是通过并与跟踪光线共线.贝娄是我如何记录射线 - 球体交叉点:

bool Sphere::intersectLocal(const ray & r, isect & i) const {
    Vec3d P = r.getPosition();
    Vec3d D = r.getDirection();
    //D.normalize();
    double a = dot(D, D);
    double b = 2 * dot(P, D);
    double c = dot(P, P) - 1;
    double delta = b * b - 4 * a * c;
    if (delta < 0)
        return false;
    if (delta == 0) {
        double t = -b / 2 * a;
        Vec3d Q = P + t * D; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl raytracing

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

删除对重复Haskell

例如,给出一对配对列表

[(1, 2), (1, 3), (1, 4), (2, 1), (3, 1), (4, 1)]
Run Code Online (Sandbox Code Playgroud)

所以,我试图删除对重复,我认为一对是重复if(x,y)==(y,x),例如:(1,2)with(3,1)

我正在生成带有理解列表的列表,它来自一个列表

MyList = [(intA, intB) | x <- integerList, y <- integerList, x /= y]
integerList = [1, 2, 3];
Run Code Online (Sandbox Code Playgroud)

请注意,我写的第一件事只是我想要发生的事情的一个例子,它不是上面的理解列表的输出.

我最近开始使用Haskell,我该如何解决这个问题?什么是最好的选择?我尝试使用地图,但没有成功,我应该将地图与在其中使用反向的foldl/foldr组合吗?我该怎么办?

haskell

3
推荐指数
1
解决办法
490
查看次数

标签 统计

c++ ×1

haskell ×1

opengl ×1

raytracing ×1