小编use*_*321的帖子

雷三角交叉口

我看到经常推荐使用Moller和Trumbore的Fast Minimum Storage Ray/Triangle Intersection.

问题是,我不介意预先计算和存储任何数量的数据,只要它加速交叉点.

所以我的问题是,不关心记忆,做射线三角交叉的最快方法是什么?

编辑:我不会移动三角形,即它是一个静态场景.

algorithm graphics geometry rendering

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

用于在大型集合中找到距离最远的球体的高效算法

我有10000到100000个球体的集合,我需要找到距离最远的球体.

一个简单的方法做,这是简单地比较所有的领域,彼此存储的最大距离,但这种感觉就像一个算法的实际资源猪.

Spheres以下列方式存储:

Sphere (float x, float y, float z, float radius);
Run Code Online (Sandbox Code Playgroud)

Sphere :: distanceTo(Sphere&s)方法返回球体两个中心点之间的距离.

例:

Sphere *spheres;
float biggestDistance;

for (int i = 0; i < nOfSpheres; i++) {
    for (int j = 0; j < nOfSpheres; j++) {
        if (spheres[i].distanceTo(spheres[j]) > biggestDistance) {
            biggestDistance = spheres[i].distanceTo(spheres[j]) > biggestDistance;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种算法,如果有的话,以某种方式以更智能的方式遍历所有可能的组合.

该项目是用C++编写的(它必须是),所以任何只能用于C/C++以外的语言的解决方案都不太重要.

algorithm collections comparison geometry

17
推荐指数
1
解决办法
2786
查看次数

Gnuplot:绘制具有定义半径的圆圈

我知道在gnuplot上你可以用圆圈绘制一些数据作为绘图点:

plot 'data.txt' using 1:2 ls 1 with circles
Run Code Online (Sandbox Code Playgroud)

然后我如何设置圆圈的大小?我想绘制几组数据,但每个数据集的大小不同.

plot geometry gnuplot

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

在OpenGL ES中绘制一个球体

我想绘制一个球体,我知道如何使用glBegin()和glEnd()之类的调用在OpenGL中完成它.

但ES中没有任何内容.

建议/教程链接?

geometry opengl-es opengl-es-2.0

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

如何在openCV C++上填充圈子

使用openCV,如何填充在C++中使用HoughCircles找到的圆圈?此圆圈将用于在图像上创建蒙版.还有更好的方法吗?

谢谢.

c++ geometry opencv computer-vision

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

带有C/C++的球体上的点,线和多边形

我的应用是表示地球上的形状(使用球体就足够了)表面.那些可以是点,线和多边形.应使用度数或弧度来定义坐标(就像地理坐标一样).

球体表面上两点之间的线段应位于其大圆上.多边形应包含这些线的集合.此外,我想在所提到的形状上执行Set - Basic Operations,例如intersection,union,difference,complement.这些操作只需要输出点集合.

我试图通过CGAL的3D球面几何内核在球体上嵌入的Nef多边形的2D布尔运算来解决这个问题.实际上,我已经遇到了在球体上划线的问题.此外,CGAL在欧几里德空间中工作,它仍然需要几何操作,以便与放置在球体上的大圆一起工作.

我的问题是,如果你可以帮助我实现CGAL中提到的功能,或者你可以推荐另一个C/C++库来实现这一点.非常感谢你!

c c++ geometry cgal computational-geometry

13
推荐指数
1
解决办法
2563
查看次数

给定球体上的随机点

我想选择给定球体上的随机点.这个页面解释得很好:

http://mathworld.wolfram.com/SpherePointPicking.html ("获取球体上任何小区域的点......")

但我不完全确定我是否在JavaScript中正确实现它,因为我几乎无法正确测试它:

var u = random();
var v = random();
var angle1 = 2 * Math.PI * u;
var angle2 = Math.pow(Math.cos (2 * v - 1), -1);
X = X0 + (radius * Math.sin(angle1) * Math.cos(angle2));
Y = Y0 + (radius * Math.sin(angle1) * Math.sin(angle1));
Z = Z0 + (radius * Math.cos(angle1));
Run Code Online (Sandbox Code Playgroud)

我特别不确定我是否正确地理解了cos(-1),我将其实现为"余弦为-1的幂".

javascript random 3d geometry

13
推荐指数
2
解决办法
9271
查看次数

三角形的插值

我有一个单位直角三角形和3个顶点的每个顶点的值.我需要插值以在三角形内的某个点找到值.几个小时的搜索没有发现实际上告诉我如何做到这一点.这是我最接近的尝试,实际上非常接近但不太正确 -

                result = 
                v1 * (1 - x) * (1 - y) +
                v2 * x * (1 - y) +
                v3 * x * y;
Run Code Online (Sandbox Code Playgroud)

v1,v2和v3是三角形的3个顶点处的值.(x,y)是您尝试查找值的三角形中的点.

任何一种方法都会对我有所帮助.它不一定需要是单位/右三角形.

更新的信息:我有一个均匀间隔点的网格和每个点的值.我在网格上最近的3个点做了一个三角形.这是一张图片来说明它 - 在此输入图像描述
所以我必须在5,3和7之间进行插值以找到x的值.该点也可以位于另一个三角形内,这意味着您将在5,7之间进行插值,并在该方块的左下角进行插值.

在我展示的代码中,v1 = 5,v2 = 3,v3 = 7.x
是"x"方向的分数距离(范围[0-1]),y是"y"方向的分数距离.
在图片的例子中,x可能约为0.75,y约为0.2

这是我最接近的尝试 -
在此输入图像描述
使用 - 创建 -

        if (x > y) //if x > y then the point is in the upper right triangle
            return
                v1 * (1 - x) * (1 - y) +
                v2 * x * (1 …
Run Code Online (Sandbox Code Playgroud)

geometry interpolation

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

报告ALAssetRepresentation元数据方法崩溃

我有一些代码来包装从枚举ALAssetLibrary中的资产中检索到的ALAsset对象.我收到用户遇到崩溃的报告,包装器对象的一部分要求它包含元数据的ALAsset.

崩溃的代码在这个包装器类中,它只是要求它的ALAsset的元数据如下:

[[myAlAsset defaultRepresentation] metadata]; 
Run Code Online (Sandbox Code Playgroud)

这是一个部分堆栈跟踪,代表我看到的崩溃:

0
CoreFoundation   CFDataGetBytePtr + 5
1
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
2
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
3
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
4
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 114
5
PhotoLibraryServices     -[PLManagedAsset adjustmentsXMPRepresentation] + 226
6
AssetsLibrary    __33-[ALAssetRepresentation metadata]_block_invoke + 24
7
AssetsLibrary    __53-[ALAssetRepresentationPrivate _performBlockAndWait:]_block_invoke + 68
8
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
9
libdispatch.dylib    _dispatch_client_callout + 22
10
libdispatch.dylib    _dispatch_barrier_sync_f_invoke + 26
11
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 106
12
AssetsLibrary    -[ALAssetsLibrary _performBlockAndWait:] + 134
13 …
Run Code Online (Sandbox Code Playgroud)

ios assetslibrary ios7

13
推荐指数
1
解决办法
571
查看次数

在OpenGL中将纹理映射到球体时出现缝隙问题

我正在尝试创建几何体以在OpenGL中表示地球.我有一个或多或少的球体(尽管接近地球的椭圆大地水准面).我绘制了地球表面的纹理(这可能是一个墨卡托投影或类似的东西).纹理的UV坐标对应于几何的纬度和经度.我有两个问题,我无法解决.我正在使用OpenSceneGraph,但我认为这是一个普通的OpenGL/3D编程问题.

  • 有一个非常明显的纹理接缝.我确定这是因为我不知道如何将UV坐标映射到发生接缝的XYZ.我只将UV coords映射到最后一个顶点然后环绕...你需要将两个不同的UV坐标映射到同一个XYZ顶点以消除接缝.是否有一个常用的技巧来解决这个问题,或者我只是做错了?

  • 两极发生疯狂的扭曲变形.我猜这是因为我在极点映射一个UV点(对于地球,我使用[0.5,1]作为北极,而[0.5,0]作为南极).你会做什么呢?我可以接受这个......但是在较低分辨率的网格中它非常明显.

我附上了一张图片来展示我在说什么.

我很害怕渲染地球

c++ opengl geometry

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