- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在这里阅读这篇文章:http://paulbourke.net/geometry/polygonise/ .
目前,我有一个类似 minecraft 的地形,它是使用单纯形噪声生成的,我将其分成 16x16 block ,每个 block 有 32x32x128 block 。现在,我想在行进立方体中将我生成的噪声用于 Polygonise 函数。但我的问题是如何计算等值?我不明白。
这里的任何人都知道一篇更有趣的文章。哈哈
编辑:
嘿,我在 http://paulbourke.net/geometry/polygonise/marchingsource.cpp 上找到了这个.
sSourcePoint[] 的值为 0.5,因此它只是使对象居中,但是 fResult += 0.5/(fDx*fDx + fDy*fDy + fDz*fDz) 有什么作用?天哪,我被这些代码吓坏了。
GLfloat fSample1(GLfloat fX, GLfloat fY, GLfloat fZ)
{
GLdouble fResult = 0.0;
GLdouble fDx, fDy, fDz;
fDx = fX - sSourcePoint[0].fX;
fDy = fY - sSourcePoint[0].fY;
fDz = fZ - sSourcePoint[0].fZ;
fResult += 0.5/(fDx*fDx + fDy*fDy + fDz*fDz);
fDx = fX - sSourcePoint[1].fX;
fDy = fY - sSourcePoint[1].fY;
fDz = fZ - sSourcePoint[1].fZ;
fResult += 1.0/(fDx*fDx + fDy*fDy + fDz*fDz);
fDx = fX - sSourcePoint[2].fX;
fDy = fY - sSourcePoint[2].fY;
fDz = fZ - sSourcePoint[2].fZ;
fResult += 1.5/(fDx*fDx + fDy*fDy + fDz*fDz);
return fResult;
}
最佳答案
好吧,Paul 的消息来源真的是“胡编乱造”。 fSample1 之前的评论说:
//fSample1 finds the distance of (fX, fY, fZ) from three moving points
基本上,他正在创建一个所谓的“变形球”对象,因此他需要将三个距离函数(与 fSourcePoint[i] 的距离)“混合”为一个。为此,他采取了
Isovalue = 1/f[0] + 1/f[1] + 1/f[2]
在哪里
f[i] = 1/DistFromCenterToSourcePoint[i].
效果很简单——当你远离每三个点时,等值几乎为零。越接近点 - f[i] 越小,等值越大。
该距离是通常的平方欧氏距离
dist(p1, p2) = sqrt( (p1.x - p2.x)^2 + (p1.y - p2.y)^2 + (p1.z - p2.z)^2)
要获得“类似 Minecraft”的等值面,您需要使用其他一些指标。看看出租车(又名曼哈顿)指标:
dist1(p1, p2) = abs(p1.x - p2.x) + abs(p1.y - p2.y) + abs(p1.z - p2.z)
或最大度量
distMax(p1, p2) = max( abs(p1.x - p2.x), abs(p1.y - p2.y), abs(p1.z - p2.z) )
这些指标中的“球体”(即满足球体方程“dist = R”的集合)是立方体。
反转它们,计算总和(全部在 fSample1 函数中完成),通过实验选择一些典型的等值并查看结果。
关于algorithm - 移动立方体算法中的等值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177604/
我使用 Pandas 作为数据库替代品,因为我有多个数据库( Oracle 、 SQL Server 等),并且我无法将一系列命令与 SQL 等效。 我在 DataFrame 中加载了一个包含一些列的
使用 dimensional-tf 时包,是否可以使用“普通”Num 实例(即 Int、Double、Integer),而无需使用一个单元? 例如,此代码不进行类型检查(在 ghci 中): {-#
我有很多这样的陈述: INSERT INTO app.organization (name, org_type) VALUES ($1, $2) 在我的代码中。我想捕获它,将其粘贴到
我有很多这样的陈述: INSERT INTO app.organization (name, org_type) VALUES ($1, $2) 在我的代码中。我想捕获它,将其粘贴到
我正在使我的应用与平板电脑兼容,并且我正在尝试了解实现此目的的最佳方式。 我有一个 GridView,每个图像下面都有图像和文本。目前每张图片的高度都设置为 120dp 而不是 wrap_conten
我对 MongoDB 非常陌生,并且使用 jupyter 笔记本从 mongodb 中提取数据。我正在尝试获取 MongoDB 中的前 100 个文档,并且我确实有一种仅获取 100 个文档的粗略方法
我的代码, class User(db.Model, UserMixin): uid = db.Column(db.Integer, primary_key=True) username =
我正在尝试在我的本地机器上启动我的 PostgreSQL 服务器。但是我收到一条错误消息: FATAL: could not create shared memory segment: Invali
我正在使用基于 C++ 的程序,但它有自己的语法。例如,这是我将变量 x 设置为等于 2 的方式: x() = 2; 我从外部文件中读入变量及其初始值。数据存储在两个 vector 中。 vector
我是一名优秀的程序员,十分优秀!